mod_rewrite代码检查双重写规则

时间:2013-08-02 13:12:56

标签: php apache mod-rewrite

这是我当前的配置:

  

1.RewriteRule ^ india / news.php /portal/india/stories/telugu.php??topicid=14

     

2.RewriteRule ^ india / telugu.php?currentpage =([0-9] +)。& topicid = 14 /portal/india/stories/telugu.php?currentpage=$1&topicid=14

规则1将http://www.domain.com/portal/india/stories/telugu.php?topicid=14重写为 http://www.domain.com/india/news.php工作正常。

规则2应该将http://www.domain.com/portal/india/stories/telugu.php?currentpage=p.no&topicid=14重写为http://www.domain.com/india/telugu.php?currentpage=p.no&topicid=14,但这不起作用。

显示未找到404。

这里p.no =数字数字

如果我需要详细说明我的问题,请告诉我。

1 个答案:

答案 0 :(得分:0)

RewriteRule使用正则表达式,所以有一个?在正则表达式中,不表示查询字符串,而是作为正则表达式键开始。

除非为查询字符串设置条件,否则RewriteRule实际上只查看请求URI并忽略查询字符串。

所以规则2应该是这样的

RewriteCond %{QUERY_STRING} currentpage=([0-9]+).&topicid=14
RewriteRule ^india/telugu.php /portal/india/stories/telugu.php?currentpage=%1&topicid=14

请注意,在此设置中,您需要%1而不是$ 1

我希望这有助于我多次遇到这个问题,这是我让它工作的唯一方法。您也可以在http://martinmelin.se/rewrite-rule-tester/

等网站上进行重写测试