在应用DirectoryIndex之后应用mod_rewrite规则

时间:2009-09-02 15:04:23

标签: apache mod-rewrite

我的托管公司最近将我从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后?

1 个答案:

答案 0 :(得分:1)

尝试使用此规则而不是DirectoryIndex指令:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)/?$ $1/blog.html