这是我的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
它对我没有任何意义。
答案 0 :(得分:0)
您真正的错误是使用&lt; Directory /&gt;而不是/ var / www的direcotry部分。您的重写将在该上下文中匹配,并且您不会打开整个文件系统。
在Directory / Location / htaccess中使用RewriteRule时,比较与您定义它们的位置有关。这就是它试图猜测剥离的原因。
如果您完全简化并在目录上下文之外移动重写,则需要在比较和替换中添加前导斜杠以及[PT]标记。