【问题标题】:301 Redirects problem - urls with ? and =301 重定向问题 - 带有 ?和 =
【发布时间】:2011-07-18 13:25:44
【问题描述】:

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

我可以得到简单的重定向

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

工作,但我有一些这样的网址

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

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

谢谢。

【问题讨论】:

  • 只需删除查询字符串,它将被原封不动地复制到新的 URL(例如redirect 301 /test.asp http://www.domain.com/test3.html)。如果您只需要在特定查询字符串上重定向(例如,在Group=100 时重定向,但如果有其他值则忽略).. 那么您必须使用 mod_rewrite。

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


【解决方案1】:

以下是您提供的 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]
  1. 如您所见,查询字符串与页面名称单独匹配。所以..对于每个这样的重定向,你需要 2 行:RewriteCond & RewriteRule。

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 嘿 Michael 和 LazyOne 感谢您的回答,这正是我所害怕的。我有大约 50 个不同的查询字符串需要 301 重定向到一个新的 url。 LazyOne - 你写我必须使用 mod_rewrite - 我会试着用谷歌搜索一下。谢谢
    • @Martin 在用户名前使用@,否则将不会通知他人您的评论。如果你愿意——我可以为你提供这样的重写规则,但你必须检查你的服务器上是否启用了 mod_rewrite(在大多数情况下是启用的)。
    • @LazyOne 好的,感谢@的建议,我不知道,我是在 stackoverflow 上写作的新手,通常我可以在这里的其他线程中找到答案 - 它是一座金矿。如果你能给我提供这样的东西,那就太好了。只是为了澄清我有 2 个不同的查询字符串,例如: group.asp?group=113 和 /product.asp?product=1107 应该启用 Mod 重写。谢谢,非常感谢您的帮助。
    • @Martin 用详细信息更新您的问题——您提供的信息越多越好。请提供从 URL => 到 URL。
    • @LazyOne redirect 301 /group.asp?group=113 domain.dk/til-born.htmlredirect 301 /product.asp?product=1136 domain.dk/til-born/bukser.html 等等。我希望这就足够了,唯一改变的是ID号码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2010-12-31
    • 2023-03-25
    • 2014-03-10
    • 2011-11-01
    • 2015-11-28
    相关资源
    最近更新 更多