linux上面怎么给linux apache php模块安装rewrite模块

[urlrewrite模块调试]如何调试Apache的URL重写,详解调试Apache的mod_rewrite模块,在线Apache重写规则测试工具介绍。apache下htaccess不起作用,linux,windows详解
引用地址:
注意: 该地址仅在今日23:59:59之前有效
背景:后知后觉之经过实践证明,其实,调试还是用print_r($_GET);好,见: /post/1950/ ,辅助下正则猫:RegexBuddy,也就解决了90%的问题。共计有三个方法来调试这个Urlrewrite:一)调试apache的urlrewrite是个大问题,这儿有两个哥们的博文作了介绍,特转之。&& 在旧的Apache的httpd.conf里面是有这样的参数的:
#Rewrite Log
RewriteLog -rewrite.log #此处可以写绝对地址
RewriteLogLevel 3
&& 但是在新版本的Apache中,已经取消了RewriteLog这个参数,如果你加上这个参数只会使你的Apache无法启动!新版本的Apache已经把Rewrite模块的日志也写到了Apache的error.log中,只需要我们制定一下输出的log的级别和trace的深度就好了,例如LogLevel alert rewrite:trace3这样可以在Apache默认的日志文件的地方,(一般是/var/log/httpd/),如此以来,可以通过tail -f 的方式来刷新日志文件观察apache URL重写的基本过程。但是这样的调试有很多弊端,Apache的RewriteLog指令只能在conf文件中,不能在.htaccess文件,所以必须具有root用户权限,并且修改后需要重启apache,对调试代理复杂性。默认的日志位置 /var/log/httpd 也只能有root用户才能访问。由于一次刷新网页的请求很多(如很多图片、js的请求),导致日志文件比较凌乱,查看也比较困难。笔者在Drupal论坛里偶然发现一个比较特殊的方法,这种方法调试Apache URL Rewrite比较简单,此方法只需要在.htaccess即可完成调试。其一,在.htaccess的 RewriteEngine on 后面添加如下代码
#Should use vardump in Query
RewriteCond %{QUERY_STRING} vardump
RewriteRule (.*) /?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA]
这样,如果要调试某些变量,只需要在URL中加入vardump的query即可。如:/?vardump就会跳转到,从URL后面的Query即可得到某些参数的值。这里列出来Apache默认的一些变量
#Apache variables
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
QUERY_STRING
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
这样就可以轻松的打印出某些具体变量的值,以便检查我们的设置是否正确。其二,我们可以单独使用下面一行代码
#Goto baidu
RewriteRule (.*) /?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA]
把这行代码放到我们想要的RewriteRule的前面,如果我们的RewriteCond验证成功,则当前URL就可以被跳转,否则,不跳转。这样可以轻松的检查我们书写的RewriteCond是否正确。此方法虽然没有检查Log文件那样正规,但是实用也易用,不失为一种调试URL重写的好办法。来源:/2012/05/apache-rewrite-url-debug//debug-the-mod_rewrite-in-apache.html.htaccess 修改用不用重启apache:.cn/s/blog_6e770c2d.htmlApache是一个高度可配置的web服务器,而.htaccess则是高度可配置的重要原因之一。设想一下,如果每一个用户都将自己的配置信息写在httpd.conf文件里,那复杂性和安全性都将是巨大的隐患。Apache通过.htaccess实现了面向目录的分布式配置功能,通过.htaccess,我们可以为不同的目录定制不同的功能。比如:1)目录默认页面 2)自定义错误页面 3)页面重定向 4)页面访问权限 等等。而且,对于用户来说,修改httpd.conf后,需要重启Apache才能生效;而修改.htaccess文件无需重启Apache使之生效,这也是.htaccess的另外一个优势二)老外的工具介绍:调试Apache的url重写规则的时候没有任何的提示和辅助工具,结果也只有成功/不成功两种,这个设置估计会让很多人尝试url重写功能的时候会抓狂,今天无意中有国外友人提供了一个在线的Apache url 重写规则调试器,地址在此:http://civilolydnad.se/projects/rewriterule/你可以在页面上的规则框中输入你想调试的规则,然后在上面的url框中输入访问地址查看规则的运行情况另外这个测试工具暂时功能有限只能测试RewriteRule,像高级点的RewriteCond、RewriteMaps、RewriteBase这些规则都不支持,所以剩下的那些高级功能还是要自己慢慢刷页面调试了。来自:http://be-evil.org/?post=231试例测试:输入: magento./new/abc.htmlUrl规则填写:RewriteEngine OnRewriteRule ^magento./new/(.*)$ /default/$1得到结果:Resulting URL: /default/abc.html#&&Match?&&Rule&&&&Resulting URL 1&&yes&&RewriteRule&&^magento./new/(.*)$ /default/$1 /default/abc.html 三)再就是把这个url通过PHP来输出:把$_SERVER数组输出查看,print_r($_SERVER);来自:.cn/2269/article_2268695.html实践情况如下:如这个Url,用这个老外写的工具就不行,于是得用第三)个方法,直接print_r($_SERVER)打印来调试Url:video/index-hot-2.htmlUrlRewrite为:RewriteEngine OnRewriteRule ^video/(index|list)(-(hot|fav|comment|dig|new))?(-(day|week|month))?(-(\\d+))?(-(\\d+))?\\.html$ /index.php?c=rank&a=video&style=$1&index=$3&period=$5&category=$7&page=$9&max_age=1800通过print_r($_SERVER);得到:[REQUEST_URI] =& /video/index-hot-2.html[REDIRECT_QUERY_STRING] =& c=rank&a=video&style=index&index=hot&period=&category=2&page=&max_age=1800[QUERY_STRING] =& c=rank&a=video&style=index&index=hot&period=&category=2&page=&max_age=1800可能出现下面这三种的错误可能性: 第一种:启用 rewrite 和 .htaccess 设置rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule rewrite_module modules/mod_rewrite.so去掉前面的#号。改为:LoadModule rewrite_module modules/mod_rewrite.so.htaccess设置:windows里面这样设置:AccessFileName htaccess&&linux里面这样设置:AccessFileName .htaccess。linux比windows里面文件名前面多了一个点。如果没找到AccessFileName自己在httpd.conf文件最后面加上。 第二种:AllowOverride 的设置。默认AllowOverride 为AllowOverride none。把这个改为:AllowOverride All。如果配置了多个虚拟目录需在每个目录里面开启,实例:&VirtualHost *:80&&&&&&&&&DocumentRoot &D:SvnTracsvnSVNRepositorywwwroot&&&&&&&&&ServerName 127.0.0.1:80 &&&&&&&&DirectoryIndex index.html index.htm index.php index.shtml&&&&&& &Directory &D:SvnTracsvnSVNRepositorywwwroot&&&&&&&&&&&& Options Indexes FollowSymLinks&&&&&&&&&& AllowOverride ALL&&&&&&&&&& Order allow,deny&&&&&&&&&& Allow from all&&&&&& &/Directory&&/VirtualHost&&VirtualHost 127.0.0.2:80&&&&&&&&&DocumentRoot &D:/SvnTrac/svn/SVNRepository/www/&&&&&&&&&ServerName 127.0.0.2:80 &&&&&&&&DirectoryIndex index.html index.htm index.php index.shtml&&&&&& &Directory &D:/SvnTrac/svn/SVNRepository/www/&&&&&&&&&&&& Options Indexes FollowSymLinks&&&&&&&&&& AllowOverride ALL&&&&&&&&&& Order allow,deny&&&&&&&&&& Allow from all&&&&&& &/Directory&&/VirtualHost& 第三种:Options 的设置默认设置是:Options Indexes FollowSymLinks如果改成以下设置后,就会出错Options Indexes FollowSymLinks MultiViews Includes (出错)如果要启用,目录浏览 MultiViews服务器端包含 Includes (&!–#include virtual=”top.htm” –&)为了简单可以设置为:Options All 前两种是配置中常见的错误,第三种一般少见,最后提醒大家一下,记得配置文件改好后一定要重启服务器啊。有问题,留言,或收听微薄。来源:/article/show-123.htmlhttp://www.jb51.net/article/25476.htm实践情况,自己试下如下:RewriteEngine OnRewriteBase /RewriteRule ^(.+).html$ test.php?id=$1后来访问:/11.html跳转到了test.php &?php&&&&&&&&print_r($_SERVER);&&&&&&&&print_r($GET);//这个有用参考:/post/1950/?&
&&&&[REDIRECT_STATUS] =& 200
&&&&[HTTP_HOST] =&
&&&&[REQUEST_URI] =& /11.html
&&&&[SCRIPT_NAME] =& /test.php
&&&&[REMOTE_ADDR] =& 192.168.1.101
&&&&[DOCUMENT_ROOT] =& /var/www
作者:@地址:版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: justwinit 编辑于 18:14
[9/9]北京市海淀区中关村理想国际大厦18层 Address:Sina 18th floor Ideal plaza Zhongguancun Haidain
Beijing 100080, P.R.China
[1/9]深圳南山腾讯大厦8楼 Address:Tencent Plaza High-tech One Road, Middle Zone, High-new Science & Technology Park, Nanshan Distrcit, Shenzhen City, Guangdong Province 518057, P.R. China
[2/9]深圳南山腾讯大厦旁大族激光大厦三楼 Address:Han's Building,Kejizhongyi Avenue, Hi-tech Pack,Nanshan District, Shenzhen City, Guangdong Province 518057, P.R.China
[2012/10-Now]北京海淀区西三环中路10号望海楼B座7层央视国际网络有限公司 Address:Seaview floor, Haidian District No.10,West Sanhuan Road,Beijing 100142, P.R.ChinaApache如何开启Rewrite模块?-apache-Php教程-壹聚教程网Apache如何开启Rewrite模块?
Apache如何开启Rewrite模块呢,下面本人给大家总结一下在linux系统与windows系统中开启apache Rewrite模块方法。
ubuntu如何开启Rewrite模块
在终端输入:
sudo a2enmod rewrite& 开启Rewrite模块(停用模块,使用 a2dismod)
sudo gedit /etc/2/sites-available/default 修改下面的地方
&Directory /&
Options FollowSymLinks
AllowOverride None(修改为AllowOverride All)
&/Directory&
&Directory &/var/orioner&&
Options Indexes FollowSymLinks MultiViews
AllowOverride None(修改为AllowOverride All)
Order allow,deny
allow from all
&/Directory&
最后sudo /etc/init.d/apache2 restart。
----------------------------------------------------
在网站下面建立.htaccess文件
修改.htaccess文件属性& chmod -R 777 .htaccess
Windows如何开启Rewrite模块
系统 Windows
Apache 2.2
加载Rewrite模块:
在conf目录下httpd.conf中找到
LoadModule rewrite_module modules/mod_rewrite.so
这句,去掉前边的注释符号&#&,或添加这句。
允许在任何目录中使用&.htaccess&文件,将&AllowOverride&改成&All&(默认为&None&):
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be &All&, &None&, or any combination of the keys:
# Options FileInfo AuthConfig Limit
AllowOverride All
在Windows系统下不能直接建立&.htaccess&文件,可以在命令行下使用&echo a& .htaccess&建立,然后使用记事本编辑。
CentOs开启Apache的rewrite_module
centos的配置文件放在: /etc/httpd/conf/httpd.conf
打开文件找到:
LoadModule rewrite_module modules/mod_rewrite.so
将前面&#&去掉,如果不存在则添加上句。
如果你的网站是根目录的话:找到
&Directory /&
& Options FollowSymLinks
& AllowOverride None&
&/Directory&
将上面的None改为All
如果你的站点不在根目录,设置如下:
&Directory &/var/www/html/my_directory&&&
Order allow,deny
Allow from all
AllowOverride All
&/Directory&
OK,然后重启服务器,service httpd restart ,这样.htaccess就可以使用了。
上一页: &&&&&下一页:相关内容linux上面如何给apache安装rewrite模块 - PHP当前位置:& &&&linux上面如何给apache安装rewrite模块linux上面如何给apache安装rewrite模块&&网友分享于:&&浏览:15次linux上面怎么给apache安装rewrite模块?在网上找到的答案是: 在apache安装包里面生成一个mod_rewrite.so文件
实验成功& 问题:这个服务器我不知道apache安装包在哪
find也找不到
(linux新手)& 直接把我本地的mod_rewrite.so这个传上去可以吗?------解决方案--------------------
看看自己的apache 是什么版本,去下一个源码包然后编译,你本地的应该是不可以的。当然你可以自己试看看,要么就干脆下个新版本整个重新编译,编译的时候加上 rewrite模块 enable-rewrite.你在用什么linux? rh?增加mod_rewrite模块   # find . -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件   # cd PATH/to/mod_rewrite.c //进入包含mod_rewrite.c文件的目录   # /usr/local/apache/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里   # /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la   如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。   编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:   LoadModule rewrite_module modules/mod_rewrite.so   这时,你的apache应该已经支持rewrite了。   vicos注:完成之后,记得重启服务器apache.
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 apache mod rewrite 的文章

 

随机推荐