【问题标题】:RewriteCond breaking the RewriteRule for no apparent reasonRewriteCond 无缘无故地破坏了 RewriteRule
【发布时间】:2023-03-10 20:38:01
【问题描述】:

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

这是 .htaccess 的内容:

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

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

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

但是,如果我注释掉该行 RewriteCond $1.php -f 一切正常,即将我的 index.html 请求转发到 index.php。

任何想法为什么?我认为 -f 应该测试“文件存在”并且 $1 应该是“文件”?

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

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

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

    【讨论】:

    • 对不起,我不关注,我已经 setRewriteBase /myproject/ 我应该把 ^ 放在哪里?我以为 ^ 只是匹配字符串开头的正则表达式?你可以再详细一点吗?谢谢。
    • 哦,我想我明白你的意思了。您是否错过了前两行虽然是重写条件而不是重写规则?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2020-03-06
    • 1970-01-01
    相关资源
    最近更新 更多