5290589 发表于 2016-12-30 07:43:15

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的官网。
页: [1]
查看完整版本: Apache地址重写