使用查询字符串重定向URL

时间:2014-09-10 09:54:32

标签: regex apache .htaccess redirect query-string

我目前的任务是永久重定向客户端的多个URL。我正在使用" Redirect 301"没有查询字符串的URL命令,工作正常。

现在我需要永久重定向多个选择性URL,包括查询字符串。问题是,我不允许将查询字符串重写为漂亮的URL,因此我需要找到一种方法将带有查询字符串的旧URL重定向到带有查询字符串的新URL(哦,小男孩)。

实施例(一个或多个):

Old: /loremipsum/dolorsit/?lang=en
New: /consetetur/sadipscing/?lang=en

Old: /dolorsit/?lang=en
New: /sadipscing/?lang=en

Old: /loremipsum/dolorsit/?lang=it
New: /consetetur/sadipscing/?lang=it

Old: /dolorsit/?lang=it
New: /sadipscing/?lang=it

由于网址总是不同且有选择性,因此我无法使用某种排序质量重定向。 我需要做的是手动将每个URL重定向到新的URL,两者都使用查询字符串。

我正在使用:

RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^loremipsum/dolorsit/$ http://domain.com/consetetur/sadipscing/?lang=en [R=301,L]

仅在不附加查询字符串时才有效,这很奇怪。

非常感谢帮助,我真的很疯狂。

1 个答案:

答案 0 :(得分:0)

您可以使用:

RewriteCond %{QUERY_STRING} ^lang=en$
RewriteRule ^loremipsum/?$ /dolorsit/ [R=301,L,NC]

RewriteCond %{QUERY_STRING} ^lang=it$
RewriteRule ^loremipsum/?$ /consetetur/ [R=301,L,NC]

默认情况下,查询字符串会附加到目标网址,因此?lang=en会自行附加到新网址。