301重定向是否适用于包含查询字符串的网址?

时间:2015-06-17 02:36:52

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

我已经搜索了这个,但我找到的答案似乎是围绕重写网址或重定向整个部分中的大量页面而且看起来很混乱(很多正则表达式)。

我们需要添加一些301重定向,除了13个包含查询字符串的网址外,一切正常。

重定向这些网址有诀窍吗?

Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=39 /blogsearch/Coffee
Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=26 /blogsearch/Food
Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=27 /blogsearch/Wine
Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=29 /blogsearch/Travel
Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=37 /blogsearch/Hotel
Redirect 301 /blogsearch/?akID%5B30%5D%5BatSelectOptionID%5D%5B%5D=49 /blogsearch/Apartments

非常感谢任何帮助。

干杯

1 个答案:

答案 0 :(得分:3)

是的,这是一个技巧。您不能将Redirect指令用于查询字符串。

您可以使用mod-rewrite执行此类操作。只需为您拥有的每个链接更改相应的查询字符串值即可。

RewriteEngine On
RewriteCond %{QUERY_STRING} (.+)=39
RewriteRule ^blogsearch/?$ /blogsearch/Coffee? [L,NC,R=301]
RewriteCond %{QUERY_STRING} (.+)=26
RewriteRule ^blogsearch/?$ /blogsearch/Food? [L,NC,R=301]
RewriteCond %{QUERY_STRING} (.+)=27
RewriteRule ^blogsearch/?$ /blogsearch/Wine? [L,NC,R=301]
RewriteCond %{QUERY_STRING} (.+)=29
RewriteRule ^blogsearch/?$ /blogsearch/Travel? [L,NC,R=301]
RewriteCond %{QUERY_STRING} (.+)=37
RewriteRule ^blogsearch/?$ /blogsearch/Hotel? [L,NC,R=301]
RewriteCond %{QUERY_STRING} (.+)=49
RewriteRule ^blogsearch/?$ /blogsearch/Apartments? [L,NC,R=301]