.htaccess 301重定向除首页

时间:2019-11-15 09:30:48

标签: .htaccess redirect

我想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

我该怎么做?

2 个答案:

答案 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以获得永久重定向,并确保在测试之前清空浏览器缓存