我的.htaccess RewriteRule Regexp中的错误在哪里?

时间:2013-11-28 20:14:09

标签: php regex apache .htaccess mod-rewrite

我想要这个网址

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

我真的无法弄清楚为什么,当我输入第一个网址时,我会收到404错误信息。

  1. RewriteEngine已启用。
  2. /rankings.php存在。
  3. 此外,我有另一个RewriteRule,更复杂,我 写道,这就像魅力一样。
  4. classifica.html不存在。我只是用我的网站更新 更多SEO友好的网址
  5. 我的规则有什么问题?

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

1 个答案:

答案 0 :(得分:0)

我发现了错误,但我没有找到原因。

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

示例

如果我在.htaccess中写下这条规则:

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

并输入此网址

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

我收到404错误。即使正则表达式是正确的,apache RewriteEngine也无效。相反,如果我写这个规则:

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

并输入此网址

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

一切正常。