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

时间:2012-01-26 04:15:40

标签: apache .htaccess mod-rewrite redirect

我有一个运行Web服务的Drupal 6安装。因此,如果有人访问www.example.com/services/json?method=views.get&view_name="test“,他们会获得正确的编码响应。

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

我尝试了几种方法,但没有任何作用。它只是疯了,说我有太多的重定向,然后页面无法加载。

我尝试过的一些事情:

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

或者

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

以下是文件夹结构的外观。

public_html - 顶部文件夹,里面包含以下内容: -main 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]

在子域文件夹中(我在测试过程中删除了大部分其他规则):

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

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

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