htaccess 将旧域重定向到新域

Posted

技术标签:

【中文标题】htaccess 将旧域重定向到新域【英文标题】:htaccess redirects for old domain to new 【发布时间】:2016-06-24 23:55:58 【问题描述】:

我的网站正在更改域,我在我的“.htaccess”文件中创建了一系列 301 重定向,以重定向在旧网站上成功的 100 多个页面。还有 100 多个,但我宁愿将其他所有内容重定向到我网站上的单个页面,通知用户网站的更改。旧站点和新站点具有不同的 url 结构,因此它不像重写基本域那么简单。我还将网站切换到完全安全 (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)。 我会简单地确保列表中的最后一个重定向是打开的吗?比如包括“/?”在重写规则中:

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】:

规则应该是这样的:

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]

【讨论】:

以上是关于htaccess 将旧域重定向到新域的主要内容,如果未能解决你的问题,请参考以下文章

HTACCESS-将旧域重定向到新域

301 使用 .htaccess 从旧域重定向到新域

将所有请求从旧域重定向到新域

apache_conf 从旧域重定向到新域

如果用户已缓存站点,如何将用户从旧域重定向到新域

htaccess 域重定向到新域