【问题标题】:301 redirect with ? (question mark) not working in htacces301重定向与? (问号)在 htaccess 中不起作用
【发布时间】:2013-08-31 20:32:00
【问题描述】:

这可能是一个简单的问题,但我们找不到 301 不工作的原因。当我们有一个带问号的 url 时,.htacces 中的 301 重定向不起作用。例如:

/order/order.html?AddID=1078&Rand=666171759380936096

所以: Redirect 301 /order/order.html?AddID=1078&Rand=666171759380936096http://www.domain.nl

在我们的网站管理员工具中,我们有 8000 个具有相同结构的网址 /order/order.html?AddID=.... 说未找到 404。我们希望 301 将它们重定向到主页,但我们得到了一个 404 未找到的页面。当我们只使用 /order/order.html 的相同重定向时,他的重定向是正确的。

【问题讨论】:

  • 你的 .httaccess 是什么

标签: .htaccess redirect http-redirect url-redirection redirecttoaction


【解决方案1】:

您无法匹配Redirect 语句中的查询字符串,请使用 mod_rewrite 并匹配%{QUERY_STRING} var:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^AddID=1078&Rand=666171759380936096$
RewriteRule ^order/order.html$ http://www.domain.nl/? [L,R=301]

但由于您有大约 8000 个以查询字符串 ?AddID= 开头的 URL,那么您可以匹配:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^AddID=[0-9]
RewriteRule ^order/order.html$ http://www.domain.nl/? [L,R=301]

【讨论】:

  • 尊敬的林乔恩,感谢您的回复。我已经测试了查询字符串,但仍然找不到 404 页面。会不会跟:AddID=[0-9] this are number 我看到还有数字1078&Rand=66有关?您还有其他建议吗?谢谢
  • @Coen [0-9] 只是第一个字符。不知道出了什么问题,它在空白 htaccess 文件中对我来说很好。
  • 上面我在上面放置了第二个答案,以显示我实施您的建议时的结果
  • @Coen 我在目标末尾遗漏了一个?,但不确定这是否是您所指的问题。
【解决方案2】:

我刚刚又试了一次,现在我把它放在 htacces 的顶部,见 printscreen。在这种情况下,它是关于网址(通常我不会放置我自己的网址)www.tablet.nl,如果您将我们的 404 个页面之一 /order/order.html?AddID=1037&Rand=539054443213186002 放在 url 后面,/order /order.html 被删除,只有 ?AddID=1037&Rand=539054443213186002 显示在主 url 后面,找不到 404 页面。

任何想法,我让 htacces 如附件所示,以便您可以测试 url。

告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2013-04-06
    • 2017-06-30
    • 2014-07-05
    • 2014-12-21
    • 2011-03-08
    相关资源
    最近更新 更多