Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache RewriteCond无缘无故违反RewriteCond规则_Apache_Mod Rewrite - Fatal编程技术网

Apache RewriteCond无缘无故违反RewriteCond规则

Apache RewriteCond无缘无故违反RewriteCond规则,apache,mod-rewrite,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确实存在,我可以直接转到它,而

我刚刚开始使用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文件不存在

然而,如果我把这句话注释掉 重写cond$1.php-f 这一切都很好,也就是说,它将我的index.html请求转发到index.php

你知道为什么吗?我认为,-f应该测试‘文件存在’并且$1应该是‘文件’


顺便问一下,有人推荐一个好的、友好的mod_重写教程吗?

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

对不起,我没有遵守,我已经设置了rewritebase/myproject/,我应该把^放在哪里?我以为“^”只是匹配字符串开头的正则表达式?你能说得更具体些吗?谢谢。哦,我想我明白你的意思了。您是否错过了前两行是重写条件而不是重写规则?