Apache地址重写

1.开启mod_rewrite模块

2.httpd.conf文件中,

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
</Directory>

AllowOverride后面的参数改为All

3.在Apache的www目录下建立.htaccess文件

4..htaccess文件内容举例

<IfModule mod_rewrite.c>
   
 RewriteEngine on
   
 
 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的官网。

猜你喜欢

转载自yangyangmilan.iteye.com/blog/1225241