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