.htaccess 301重定向问题-URL是否有问题?及=

.htaccess 301重定向问题-URL是否有问题?及=,.htaccess,redirect,http-status-code-301,.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 由于某些原因,这些都不起作用 谢谢。重定向指令(据我所知)只在路径上匹配,而不是查询字符串。相反,请使用重写规则。QSA指示重写引擎将查询字符串附

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

我可以得到简单的重定向

redirect 301 /test.html http://www.domain.com/test2.html 
工作,但我有一些像这样的网址

redirect 301 /test.asp?Group=100 http://www.domain.com/test3.html
由于某些原因,这些都不起作用


谢谢。

重定向指令(据我所知)只在路径上匹配,而不是查询字符串。相反,请使用
重写规则
QSA
指示重写引擎将查询字符串附加到新的重定向URL上

RewriteEngine On
RewriteRule ^test\.asp http://www.domain.com/test3.html [L,R=301,QSA]

以下是您提供的URL的一组规则:

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]
  • 如您所见,查询字符串分别与页面名称匹配。所以对于每个这样的重定向,您需要两行:RewriteCond和RewriteRule

  • 上面的规则将进行精确匹配,这意味着不会重定向
    /group.asp?group=113¶m=value
    ,因为查询字符串是
    group=113¶m=value
    ,而不仅仅是
    group=113

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

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


  • 只需删除查询字符串,它就会原封不动地复制到新的URL(例如,
    redirect 301/test.asphttp://www.domain.com/test3.html
    )。如果只需要在特定查询字符串上重定向(例如,当
    Group=100
    时重定向,但如果有任何其他值则忽略)。。然后你必须使用mod_重写。嘿,Michael和LazyOne谢谢你的回答,这正是我所震惊的。我有大约50个不同的查询字符串需要被301重定向到一个新的url。懒人-你写我必须使用mod_重写-我会尝试谷歌一点。Thanks@Martin在用户名之前使用@,否则不会通知用户您的评论。如果你愿意,我可以给你提供这样的重写规则,但是你必须检查你的服务器上是否启用了mod_rewrite(大多数情况下是这样)。@LazyOne好的,谢谢你的@advice,我不知道,我对在stackoverflow上写这篇文章还不熟悉,通常我可以在这里的其他线程中找到答案-这是个金矿。如果你能为我提供这样的服务,那就太好了。为了澄清,我有两个不同的查询字符串,比如:group.asp?group=113和/product.asp?product=1107。应该启用Mod rewrite。谢谢,我非常感谢您的帮助。@Martin用详细信息更新您的问题——您提供的信息越多越好。请提供从URL=>到URL。@LazyOne redirect 301/group.asp?group=113 redirect 301/product.asp?product=1136等。我希望这足够了,唯一改变的是ID号