mod_rewrite不重写,error.log没有显示有价值的信息

时间:2014-11-22 14:24:41

标签: apache mod-rewrite webserver

这是我的apache2的配置:

ServerAdmin webmaster@localhost
DocumentRoot /var/www
   <Directory />
      RailsBaseURI /
      PassengerResolveSymlinksinDocumentRoot on
      AllowOverride All
      Options Indexes FollowSymLinks MultiViews
      Order allow,deny
      allow from all
      RewriteEngine on
      RewriteRule ^test.html$ test2.html
   </Directory>
   <Directory /var/www/redmine>
      RailsBaseURI /redmine
      PassengerResolveSymlinksInDocumentRoot on
   </Directory>

访问test.html时,它仍会打开test.html而不是test2.html。

这是重写在访问test.html时放入error.log的内容:

strip per-dir prefix: /var/www/test.html -> var/www/test.html
applying pattern '^test.html$' to uri 'var/www/test.html'
pass through /var/www/test.html

它对我没有任何意义。

1 个答案:

答案 0 :(得分:0)

您真正的错误是使用&lt; Directory /&gt;而不是/ var / www的direcotry部分。您的重写将在该上下文中匹配,并且您不会打开整个文件系统。

在Directory / Location / htaccess中使用RewriteRule时,比较与您定义它们的位置有关。这就是它试图猜测剥离的原因。

如果您完全简化并在目录上下文之外移动重写,则需要在比较和替换中添加前导斜杠以及[PT]标记。