我的托管公司最近将我从Apache 1升级到Apache 2,我开始看到一些与我的mod_rewrite相似的行为。
这是我的.htaccess文件:
DirectoryIndex blog.html
# Various rewrite rules.
<IfModule mod_rewrite.c>
RewriteEngine on
# Rewrite current-style URLs of the form 'showpage.php?url=x'.
RewriteRule ^(.*\.html)$ showpage.php?url=$1 [L,QSA]
</IfModule>
现在,以前使用Apache 1,如果你转到http://mysite.com/,那么DirectoryIndex将首先生效(http://mysite.com/blog.html),然后RewriteRule会将其转换为http://mysite.com/showpage.php?url=/blog.html
现在使用Apache 2,如果你转到http://mysite.com/blog.html它会按预期重写,但是如果你转到http://mysite.com/它会为你提供vanilla blog.html文件,而不会将其重写为showpage.php 。因此,在 DirectoryIndex启动之前,正在应用RewriteRule。
除了明确地添加一个额外的规则以捕获根页面(由于我必须考虑所有具有DirectoryIndex的子目录,这将是乏味的),是否有人知道如何使Apache 2应用RewriteRule 应用DirectoryIndex后?
答案 0 :(得分:1)
尝试使用此规则而不是DirectoryIndex
指令:
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/?$ $1/blog.html