Apache 将带有查询字符串的URL重定向到子域,维护查询

Apache 将带有查询字符串的URL重定向到子域,维护查询,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我安装了一个运行web服务的Drupal6。因此,如果有人访问www.example.com/services/json?method=views.get&view\u name=“test”,他们会得到正确的编码响应 我正在对它进行一些维护工作,所以我创建了一个子域并将所有内容复制到它,我想在处理主域时将所有请求重定向到子域。因此,当请求传入时,它现在需要转到old.example.com/services/json?method=views.get等 我试过几种方法,但都不管用。它只是疯了,

我安装了一个运行web服务的Drupal6。因此,如果有人访问www.example.com/services/json?method=views.get&view\u name=“test”,他们会得到正确的编码响应

我正在对它进行一些维护工作,所以我创建了一个子域并将所有内容复制到它,我想在处理主域时将所有请求重定向到子域。因此,当请求传入时,它现在需要转到old.example.com/services/json?method=views.get等

我试过几种方法,但都不管用。它只是疯了,说我有太多的重定向,然后页面无法加载

我试过几件事:

RedirectMatch 301 /services/json(.*)$ http://old.example.com/services/json$1

下面是文件夹结构的外观

public_html-顶部文件夹,其中包含以下内容: -主drupal站点文件和我正在编辑的.htaccess文件 -old(这是包含子域文件的文件夹,是主站点的副本,减去其.htaccess文件中的一些内容)

我怀疑结构可能与此有关,但我不知道

编辑:有关.htaccess文件中的重定向规则的详细信息

顶级主域文件夹:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RedirectMatch 301 ^/services/json(.*)$ http://old.example.com/services/json$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
在子域文件夹中(我在测试期间删除了大多数其他规则):


感谢您的帮助。谢谢

您确定您的
.htaccess
文件/Apache配置也不会影响子域吗?子域中的请求也会与您的重定向匹配,并创建该循环。

我怀疑您是对的。如何使其忽略子域和子域文件夹?查看我对问题所做的编辑。
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RedirectMatch 301 ^/services/json(.*)$ http://old.example.com/services/json$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]