RewriteRule不会更改http响应头中的位置

时间:2012-06-13 07:14:29

标签: .htaccess mod-rewrite redirect http-redirect

我在.htaccess文件中有这个代码,用于将domain1.com中的所有页面重定向到另一个域:

RewriteRule (.*) http://www.domain2.com/$1 [R=301,L]

但它不起作用。我用firebug检查了响应头,但Location指令仍然是domain1.com而不是domain2.com。它似乎没有改变。我在某处读到某些服务器在规则中需要一个问号,但我不知道我应该把它放在哪里。我的操作系统是debian sqeeze,apache版本是2.2.16。

编辑: 这个问题导致循环,firefox给出:

The page isn't redirecting properly
Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
*   This problem can sometimes be caused by disabling or refusing to accept
      cookies.

我的服务器位于一台服务器后面。

你会帮我吗?

2 个答案:

答案 0 :(得分:1)

如果您要将所有流量重定向到域,那么我建议Redirect。它比mod_rewrite更有效率。特别是如果这是您唯一的RewriteRule

Redirect permanent / http://www.domain2.com

答案 1 :(得分:0)

这两个域是否都由同一个文档根服务?如果是这样,您需要阻止它在请求domain2.com时重定向:

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