RewriteCond打破RewriteRule是没有明显原因的

时间:2011-09-21 15:21:15

标签: apache mod-rewrite

我刚刚开始玩mod_rewrite,我正在尝试将所有请求转发到旧的html文件,转而使用php文件。

这是.htaccess内容:

RewriteCond $1.php -f
RewriteCond $1.html !-f
RewriteRule ^(.*).html$ $1.php

问题是,当我输入一个html页面的URL时,它不起作用,我得到一个404.在Apache的错误日志中没有任何内容,只是访问日志中的404。它应该重定向到php。

现在,index.php确实存在,我可以直接转到它,旧的index.html文件不存在。

然而,如果我评论出这条线     RewriteCond $ 1.php -f 一切正常,即它将我的index.html请求转发给index.php。

任何想法为什么? -f应该测试'文件存在',$ 1应该是'文件',我想?

顺便问一下,有没有人有他们推荐的好的,友好的mod_rewrite教程?

1 个答案:

答案 0 :(得分:0)

在.htaccess中,您无需使用^$。所有规则都适用于相对于当前目录的URL。