301重定向问题 - 网址是?和=

时间:2011-07-18 13:25:45

标签: .htaccess redirect http-status-code-301

我是通过.htacces进行301重定向的新手。

我可以将简单的重定向作为

redirect 301 /test.html http://www.domain.com/test2.html 

上班,但我有一些像这样的网址

redirect 301 /test.asp?Group=100 http://www.domain.com/test3.html

由于某些原因,这些不起作用。

感谢。

2 个答案:

答案 0 :(得分:0)

Redirect指令(据我所知)仅匹配路径,而不是查询字符串。相反,请使用RewriteRuleQSA指示重写引擎将查询字符串附加到新的重定向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]
  1. 如您所见,查询字符串与页面名称分别匹配。所以..对于每个这样的重定向,你需要2行:RewriteCond&重写规则。

  2. 上述规则将执行完全匹配,这意味着/group.asp?group=113&param=value不会被重定向,因为查询字符串为group=113&param=value,而不仅仅是group=113

    要让这种重定向工作(当查询字符串中有一些可选参数时),您必须对其进行修改:RewriteCond %{QUERY_STRING} (^|&)group=113(&|$) [NC] - 这将在查询字符串(group=133中的任何位置匹配group=113并且group=11366仍然不同,所以这里没有问题。)

  3. 这需要放在网站根文件夹中的.htaccess中。如果放在其他地方,可能需要进行一些调整。