只需要重写某些网址时,无法使mod_rewrite工作

时间:2013-04-16 05:26:53

标签: mod-rewrite

我的.htaccess文件中设置了以下规则

RewriteRule ^detail.php / [R=301,NC,L]
RewriteRule ^tempate.php / [R=301,NC,L]

当调用detail.php和template.php时,这些操作是执行301重定向,虽然这有效但当我输入mydomain.co.za/detail.php?product_id=2432&category=700然后它将网站重定向到mydomain.co.za/?product_id=2432&category=700

我需要文件名为detail.phptemplate.php的任何网址,查询字符串中的任意数量的参数都会重定向到主页

我试过了RewriteRule ^detail.php?(.*) / [R=301,NC,L]这也没用。任何帮助或指南将不胜感激。

1 个答案:

答案 0 :(得分:2)

用这一行替换你的2条RewriteRule行:

RewriteRule ^(?:detail|template)\.php$ /? [R=301,NC,L]

请注意/之后的问号,这是一种特殊的mod_rewrite语法,用于从原始URI中删除任何现有的查询字符串。

另外请记住,RewriteRule只匹配没有查询字符串的URI,因此^detail.php?(.*) / [R=301,NC,L]的尝试将无法按预期工作。