我使用以下规则遇到modrewrite问题。 我收到404错误,因为规则似乎不起作用。 有人可以提供如何让它运作的解决方案吗?
RewriteRule ^/catalogue/([^/\.]+)/results.html$ /search.php?data=$1 [L]
它应该像下面这样处理网址但是给我一个404:
http://www.mydomain.com/catalogue/europe/germany/results.html
提前感谢。
答案 0 :(得分:1)
RewriteRule ^catalogue/(.+?)/results.html$ /search.php?data=$1 [L]
答案 1 :(得分:1)
您的示例网址不受重写规则的影响;使用[^/\.]+
,您允许除正斜杠和点之外的所有字符,因此europe/germany
不匹配,因为它有正斜杠。
我不知道你想要准确允许什么,但对于你的示例网址,你可以使用类似的东西:
RewriteRule ^/catalogue/([a-zA-Z/]+)/results.html$ /search.php?data=$1 [L]
允许a
到z
(大写和小写)以及正斜杠。
答案 2 :(得分:1)
尝试此规则:
RewriteRule ^/catalogue/(.+?)/results.html$ /search.php?data=$1 [l]
由于您的捕获模式,您的规则无效:
[^/\.]+
基本上意味着:
Match anything that is not a / or a . for as many times as possible.
但它会在url的第一个next /停止,这会导致它不匹配