【问题标题】:Where's the error in my .htaccess RewriteRule Regexp?我的 .htaccess RewriteRule 正则表达式中的错误在哪里?
【发布时间】:2013-12-14 23:07:15
【问题描述】:

我想要这个网址

http://www.test.racebooking.net/rankings/classifica.html

指向

http://www.test.racebooking.net/rankings.php

因此,我在我的 .htaccess 文件中编写了这条规则

RewriteRule ^rankings\/[a-zA-Z0-9\-]+\.html$ /rankings.php

我真的不明白为什么,当我输入第一个 url 时,我得到一个 404 错误消息。

  1. RewriteEngine 已开启。
  2. /rankings.php 存在。
  3. 此外,我还有另一个更复杂的 RewriteRule,我 写的,效果很好。
  4. classifica.html 不存在。我只是更新我的网站 更多 SEO 友好的网址

我的规则有什么问题??

当我在任何在线正则表达式测试器中测试正则表达式时,它会检测到字符串“rankings/classifica.html”,这意味着正则表达式实际上是对应的,但没有任何效果......

【问题讨论】:

  • 正则表达式没有任何问题,这是肯定的。您的代码还有其他问题。
  • RewriteRules 的顺序通常很重要。只是说你有另一个人在工作,并不意味着没有干扰。
  • 我真的快疯了……如果这有帮助,这是我的 .htaccess:pastebin.com/xyRuDmv5。第 10 行的规则完美运行,第 8 行的规则(我在这里粘贴的那个)不行。
  • 你的规则对我有用。您可能在 /rankings.php 中有错误。你能简化它并重新运行测试吗?
  • 由于MultiViews,这是同样的问题,请参阅此答案:stackoverflow.com/a/20302544/548225

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

我发现了错误,但我不知道为什么会发生。

基本上,如果 patternsubstitution 以相同的单词开头,则 RewriteRule 不起作用。

示例

如果我在 .htaccess 中编写此规则:

RewriteRule ^rankings\/[a-zA-Z0-9\-]+\.html$ /rankings.php

并输入此网址

http://www.mywebsite.net/rankings/classifica.html

我收到 404 错误。即使 Regexp 是正确的,apache RewriteEngine 也无法正常工作。相反,如果我写这条规则:

RewriteRule ^ran-kings\/[a-zA-Z0-9\-]+\.html$ /rankings.php

并输入此网址

http://www.mywebsite.net/ran-kings/classifica.html

一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多