我想301将oldsite.com重定向到newsite.com 我想将所有页面重定向到新网站(首页除外)上的相同URL。只有主页会转到单独的页面。
RewriteRule (.*) http://www.siteb.com/$1 [R=301,L]
所以我想做的是这样:
oldsite.com/article1应该转到newsite.com/article1
oldsite.com/article2应该转到newsite.com/article2
以此类推
但是我想要
主页oldsite.com转到newsite.com/old-site
我该怎么做?
答案 0 :(得分:1)
下面尝试,我们为根URL和其他目录URL使用单独的条件和规则。
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_HOST} ^www\.([^/]+).com$
RewriteRule (.*) http://www.newsite.com/%1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
答案 1 :(得分:0)
这里您需要重定向的请求除首页以外的所有请求,因此请在主根.htaccess
上进行尝试:
RewriteRule ^(.+)$ http://www.newsite.com/$1 [L,R=302]
然后将首页重定向到特定页面,因此添加以下行:
RewriteRule ^(.*)$ http://www.newsite.com/old-site [L,R=302]
都是这样的:
RewriteRule ^(.+)$ http://www.newsite.com/$1 [L,R=302]
RewriteRule ^(.*)$ http://www.newsite.com/old-site [L,R=302]
此正则表达式^(.+)$
将捕获除/
之外的每个请求,然后另一个正则表达式^(.*)$
将捕获该请求到首页/
,但是根据您分配的主页,您可以考虑到index
:
RewriteCond %{REQUEST_URI} !^/index
RewriteRule ^(.+)$ http://www.newsite.com/$1 [L,R=302]
RewriteRule ^(.*)$ http://www.newsite.com/old-site [L,R=302]
如果有查询字符串,您可以输入以下规则:
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ http://www.newsite.com/old-site [L,R=302]
RewriteRule ^(.+)$ http://www.newsite.com/$1 [L,R=302]
因此,如果仅首页没有查询字符串,否则按原样重定向。
注意:如果一切正常,请将302
更改为301
以获得永久重定向,并确保在测试之前清空浏览器缓存