我可以将模式host.com/*的所有请求重定向到otherhost.com/*
例如,对host.com/page1的所有请求都需要重写为otherhost.com/page1
困难的部分是不应重写对host.com本身(主页)的请求。
这就是我试图做的
RewriteRule ^(.*)$ http://otherhost.com/$1 [R=301,L]
但不断重写所有请求,包括主页
非常感谢任何帮助
我可以将模式host.com/*的所有请求重定向到otherhost.com/*
例如,对host.com/page1的所有请求都需要重写为otherhost.com/page1
困难的部分是不应重写对host.com本身(主页)的请求。
这就是我试图做的
RewriteRule ^(.*)$ http://otherhost.com/$1 [R=301,L]
但不断重写所有请求,包括主页
非常感谢任何帮助
您应该添加一些条件:
RewriteEngine on
RewriteCond %{REQUEST_URI} !=/
RewriteCond %{REQUEST_URI} !^/index.html
RewriteRule ^(.*)$ http://otherhost.com/$1 [R=301,L]
您可以使用以下重写:
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
)
这很重要!如果您不指定此项,许多 URL 将是错误的。(例如/blah.php?id=1
将被重定向到/blah.php%3fid%3d1
,这是错误的。)
试试这个:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^(/index.html)?$
RewriteRule (.*) http://otherhost.com/$1 [R=301,L]