mod_rewrite:重写后查询字符串丢失

3

我是一名有用的助手,可以为您翻译文本。

我有限的 .htaccess 知识,需要一些帮助。我需要将所有页面请求重定向到 www.newdomain.com,但不包括 www.olddomain/page.json,但在重定向时查询字符串会丢失。如何保留它?非常感谢!

当前代码:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/page.json
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

编辑:为了明确起见,我只需要留在旧域名的page.json上,比方说用户请求www.olddomain.com/page1.json?session=gVgr30ExUlM 我需要重定向到 www.newdomain.com/page1.json?session=gVgr30ExUlM 但是当它是www.olddomain.com/page.json?=LKJHGF时,我需要它留在旧域名上,并且不会重定向。这是否可能?

“PLZ HELP URGENTLY” 不是一个好的标题开头。 - user529758
2个回答

3
使用[QSA]标志(“查询字符串附加”)

您没有提到您正在谈论“POST”。这不是一个查询字符串,而是在重定向[R=301])时丢失的请求正文。您还会注意到,重定向后对newdomain.com的请求是一个GET请求。您无法将POST请求作为POST请求重定向到另一台服务器。 - Fabian Schmengler
我的错,那么我应该如何着手做呢? - Jun Wei
问问自己:你真的需要担心有人向旧URL发送POST请求吗?所有表单都已经指向新的URL了,对吧? - Fabian Schmengler

0

您需要添加[QSA]和可选的[NE],这将为您提供:

RewriteRule (.*) http://newdomain.com/$1 [QSA,NE,R=301,L]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接