我的网站中有一页的.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
但没有工作。
感谢您的帮助。
答案 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服务器无效。对于人们不可以访问主机配置的情况,它们仅作为最后一个选项提供。例如,当使用廉价的共享托管服务提供商时。