我目前的任务是永久重定向客户端的多个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]
仅在不附加查询字符串时才有效,这很奇怪。
非常感谢帮助,我真的很疯狂。
答案 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
会自行附加到新网址。