Apache地址重写
1.开启mod_rewrite模块
2.httpd.conf文件中,
<Directory />
OptionsFollowSymLinks
AllowOverrideAll
Orderdeny,allow
Denyfromall
</Directory>AllowOverride后面的参数改为All
3.在Apache的www目录下建立.htaccess文件
4..htaccess文件内容举例
<IfModule mod_rewrite.c>
RewriteEngineon
RewriteCond%{REQUEST_URI}!^/FOODZ/index.php\w*$
RewriteCond%{REQUEST_URI}!^(.*)admin(.*)$
RewriteCond%{REQUEST_URI}!^(.*)\.js$
RewriteCond%{REQUEST_URI}!^(.*)\.css$
RewriteCond%{REQUEST_URI}!^(.*)\.swf$
RewriteCond%{REQUEST_URI}!^(.*)\.xml$
RewriteCond%{REQUEST_URI}!^(.*)\.jpg$
RewriteCond%{REQUEST_URI}!^(.*)\.gif$
RewriteCond%{REQUEST_URI}!^(.*)\.png$
RewriteCond%{REQUEST_URI}!^(.*)\.ico$
RewriteCond%{REQUEST_URI}!^(.*)\.php$
RewriteCond%{REQUEST_URI}!^(.*)\.html$
RewriteCond%{REQUEST_URI}!^(.*)\.htm$
RewriteCond %{REQUEST_URI} !^/FOODZ/$RewriteBase/
RewriteRule^FOODZ/(.*)$FOODZ/index.php?file=menu&op=menu&action=search&resId=$1
</IfModule>其中 RewriteEngine on 表示打开rewrite功能。
RewriteCond是url地址重写的规则,规定了哪url重写或者哪些url不重写。
RewriteCond %{REQUEST_URI} !^/FOODZ/index.php\w*$ 表示对主机名+以/FOODZ/index.php开头的url 不进行url重写。由于重写不仅仅是地址栏的网址的重写,也会对页面里的JS、CSS等文件的路径重写,所以为了不对这些文件产生影响,增加一些RewriteCond %{REQUEST_URI} !^(.*)\.js$等规则。
RewriteBase 表示基础目录。
RewriteRule 定义了具体如果重写。RewriteRule前半段是正则表达式,后半段是重写后的地址。后半段中的$+数字自动匹配为前半段中的()中的内容,第几个数字就是第几个括号。
所有配置好以后Apache的服务要重启。
以上是一个基本的URL地址重写,还有很多强大的功能没有发挥出来。
详细的可以参考Apache的官网。