.htaccess重写规则从一个页面到另一个页面不起作用

时间:2016-02-06 15:52:19

标签: .htaccess mod-rewrite url-rewriting

我的网站中有一页的.htaccess问题。

我需要重写这个页面

https://www.lepremier.cz/Product/Index?categoryID=61

到这个

https://www.lepremier.cz/33-loake

我尝试了这两条规则

RewriteRule ^/Product/Index?categoryID=61$ http://www.lepremier.cz/23-boty-loake [R=301,L]

RedirectMatch 301 /Product/Index?categoryID=61(.*) /33-loake/$1

但没有工作。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

请求参数(URI中?后面的内容是而不是请求网址的一部分。这意味着您无法在RewriteRule中匹配它。您有改为使用RewriteCond代替:

RewriteEngine on
RewriteCond %{QUERY_STRING} "categoryID=61"
RewriteRule ^/Product/Index$ http://www.lepremier.cz/23-boty-loake [R=301,L]

这是所有文档,如果您开始阅读要使用的工具的文档,这当然是有意义的:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

总的说法,因为你会发现这个:

您自己选择的模式将.htaccess样式文件中工作,因为它以前导斜杠(/)开头,永远不会匹配。由于显而易见的原因,.htaccess样式文件中的匹配适用于相对路径

尽管如此,我没有对此进行修改,因为您始终希望将此类规则放在http服务器主机配置中。在那里,您选择的带有前导斜杠的语法将按预期工作。 .htaccess样式文件非常容易出错,难以调试,并且真的使http服务器无效。对于人们可以访问主机配置的情况,它们仅作为最后一个选项提供。例如,当使用廉价的共享托管服务提供商时。