我是通过.htacces进行301重定向的新手。
我可以将简单的重定向作为
redirect 301 /test.html http://www.domain.com/test2.html
上班,但我有一些像这样的网址
redirect 301 /test.asp?Group=100 http://www.domain.com/test3.html
由于某些原因,这些不起作用。
感谢。
答案 0 :(得分:0)
Redirect
指令(据我所知)仅匹配路径,而不是查询字符串。相反,请使用RewriteRule
。 QSA
指示重写引擎将查询字符串附加到新的重定向URL。
RewriteEngine On
RewriteRule ^test\.asp http://www.domain.com/test3.html [L,R=301,QSA]
答案 1 :(得分:0)
以下是您提供的网址规则:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} =group=113 [NC]
RewriteRule ^group\.asp$ http://domain.dk/til-born.htm? [NC,R=301,L]
RewriteCond %{QUERY_STRING} =product=1136 [NC]
RewriteRule ^product\.asp$ http://www.domain.dk/til-born/bukser.html? [NC,R=301,L]
如您所见,查询字符串与页面名称分别匹配。所以..对于每个这样的重定向,你需要2行:RewriteCond&重写规则。
上述规则将执行完全匹配,这意味着/group.asp?group=113¶m=value
不会被重定向,因为查询字符串为group=113¶m=value
,而不仅仅是group=113
。
要让这种重定向工作(当查询字符串中有一些可选参数时),您必须对其进行修改:RewriteCond %{QUERY_STRING} (^|&)group=113(&|$) [NC]
- 这将在查询字符串(group=133
中的任何位置匹配group=113
并且group=11366
仍然不同,所以这里没有问题。)
这需要放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些调整。