日期:2014-05-16  浏览次数:20812 次

Apache 重写你会了吗?

有时候感觉学习一些知识真难啊, 学了,忘记了,忘记了再去学,如此反复着,直到有一天你真真切切地掌握,更深入的理解

以前写过一个Apache 的Rewrite , 测试成功, 但今天遇到的问题却还是用了好长时间才解决掉, 原因是原来学会的和现在的条件不一样:

现在写法加入了 虚拟主机的概念:

写法如下:

<VirtualHost IP地址:80>
 LoadModule rewrite_module modules/mod_rewrite.so
 <IFMODULE mod_rewrite.c>
  RewriteEngine on
  #RewriteBase /


  RewriteRule ^(.*)/shangpinimg/(.*)/(.*)\.jpg $1/shangpinimg/index2\.php\?x=$2&y=$3
  RewriteRule ^(.*)/shangpinimg/(.*)/(.*)\.gif $1/shangpinimg/indexgif\.php\?x=$2&y=$3
  RewriteRule ^(.*)/shangpinimg/(.*)/(.*)\.png $1/shangpinimg/indexpng\.php\?x=$2&y=$3
  RewriteRule ^(.*)/shangpinimg/(.*)\.jpg $1/shangpinimg/index\.php\?x=$2
 </IFMODULE>

 ServerNamewww.taobaoxs.com
 DocumentRoot D:\webhost\taobao
 <Directory "D:\webhost\taobao">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
 </Directory>
</VirtualHost>
------------------------------------------------------------------------------------------------------------------------------------

附:

先确定您使用的 Apache 版本,及是否加载了 mod_rewrite 模块。及是否加载了 mod_rewrite 模块 . mod_rewrite 的是一个 Apache 模块,可使服务器操纵请求的网址。根据一系列规则对传入的网址进行检查,规则中包含一个正则表达式来检测特定的格式。 如果在地址中发现了一个格式,并且满足适当的条件,该格式就会被一个替代的字符串或者是动作取代。

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:


清单 1.