.htaccess从域重定向到另一个域

时间:2012-11-26 12:26:53

标签: apache .htaccess mod-rewrite

我可以将所有模式 host.com / * 的请求重定向到 otherhost.com / *

例如, host.com/page1 的所有请求都需要重写为 otherhost.com/page1

困难的部分是对 host.com 本身(主页)的请求不得重写。

这是我试图做的事     RewriteRule ^(.*)$ http://otherhost.com/$1 [R=301,L]
但不断重写包括主页在内的所有请求

任何帮助非常感谢

3 个答案:

答案 0 :(得分:1)

你应该添加一些条件:

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

答案 1 :(得分:1)

您可以使用以下重写:

RewriteEngine on
RewriteCond %{HTTP_HOST} =host.com
RewriteCond %{REQUEST_URI} !=/
RewriteRule . http://otherhost.com%{REQUEST_URI} [R=301,NE,L]

RewriteCond %{HTTP_HOST} =host.com检查主机是否为host.com

RewriteCond %{REQUEST_URI} !=/检查所请求的网页是否“索引”。 (如果这是你的意思,“对host.com本身的请求(主页)不应该被重写”)

R=301表示在重定向时应发送HTTP 301 Moved Permanently标头。

NE表示它不应该逃避特殊字符。 (例如?转义为%3f
这很重要!如果您不指定此内容,则会出现许多网址错误。 (例如/blah.php?id=1将被重定向到/blah.php%3fid%3d1,这是错误的。)

答案 2 :(得分:0)

试试这个:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^(/index.html)?$
RewriteRule (.*)  http://otherhost.com/$1  [R=301,L]