301使用查询字符串中的斜杠重定向URL

时间:2015-10-12 15:16:12

标签: apache .htaccess mod-rewrite url-redirection

我们为我们的一个客户建立了一个新的网上商店,并将他们的旧网址重定向到我们的正常网站。像往常一样,我们使用.htaccess执行此操作,如下所示:

Redirect 301 /url1/ http://www.url2.com/,它运作正常。

但旧商店有这个查询字符串 ,其中包含斜杠(!) ,例如:

/epages/14353.sf/de_DE/?ObjectPath=/Shops/61922345/Products/32428

一旦我在htaccess 301重定向字符串中使用它,它就会停止工作。我没有得到500错误或类似的错误,但当我访问/epages/14353.sf/de_DE/?ObjectPath=/Shops/61922345/Products/32428时,它不会重定向。如果我将它与查询字符串一起使用,如下所示(/epages/14353.sf/de_DE/?ObjectPath=foobar)我可以访问它并重定向,但如果它有斜杠则不会。

我试过反斜杠,编码等但没有正确的结果。有没有想法?我试过AllowEncodedSlashes On,但它给了我一个500错误。

1 个答案:

答案 0 :(得分:1)

由于您无法在QUERY_STRING指令中匹配Redirect,因此您需要使用基于mod_rewrite的规则。

在你的根目录中有这个.htaccess:

RewriteEngine On

RewriteCond %{QUERY_STRING} ObjectPath=/Shops/61922345/Products/32428
RewriteRule ^/?epages/14353\.sf/de_DE/?$ https://www.nu.nl? [L,NC,R=301]

确保在新浏览器中对此进行测试,以避免旧的缓存数据。