htaccess将旧域重定向到新

时间:2016-03-10 08:41:39

标签: .htaccess redirect

我的网站正在更改域名,我在我的" .htaccess"中创建了一系列301重定向。文件重定向超过100页,在旧网站上成功。还有100多个,但我宁愿将其他所有内容重定向到我网站上的单个页面,告知用户网站的更改。旧网站和新网站具有不同的网址结构,因此它不像重写基础域那么简单。我还将网站切换为完全安全(https)。我在下面列出了两个重定向示例,但还有更多:

RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$
RewriteRule ^about$ "https\:\/\/www\.newdomain\.com\/about\-us" [R=301,L]

RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$
RewriteRule ^another$ "https\:\/\/www\.newdomain\.com\/another\-page" [R=301,L]

我的上次重定向仅适用于基本网址(当客户有指向旧主页的链接时):

RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$
RewriteRule ^$ ""https\:\/\/www\.newdomain\.com\/"" [R=301,L]

我想要一个最终的重定向(即如果我的100个当前重定向中没有列出特定的重定向以用于旧域的其他页面),以确保所有其他内容都转到特定页面,通知客户站点更改(例如:https://www.newdomain.com/new-site-info)。 我只是确保列表中的最后一次重定向是开放的吗?例如include" /?"在重写规则中:

RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$
RewriteRule ^/?$ "https\:\/\/www\.newdomain\.com\/new\-site\-info" [R=301,L]

上述规则会与基本域规则冲突,还是这些规则最好以不同的顺序设置?

1 个答案:

答案 0 :(得分:1)

规则应按此顺序排列:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.co\.uk$ [NC]
RewriteRule ^about/?$ https://www.newdomain.com/about-us [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.co\.uk$ [NC]
RewriteRule ^another/?$ https://www.newdomain.com/another-page [R=301,L,NC]

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.co\.uk$ [NC]
RewriteRule ^/?$ https://www.newdomain.com/ [R=301,L]

# catch all rule
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.co\.uk$ [NC]
RewriteRule . https://www.newdomain.com/new-site-info [R=301,L,NC]