Apache 将一个域迁移到另一个域并在新域上强制使用https

Apache 将一个域迁移到另一个域并在新域上强制使用https,apache,.htaccess,migration,http-status-code-301,Apache,.htaccess,Migration,Http Status Code 301,我正在尝试将一个域迁移到一个新域,并强制所有内容都使用https 我尝试了几次使用.htaccess的迭代,但没有成功 我试过的一件事是: RewriteCond %{HTTP_HOST} !newsite.com$ [NC] RewriteRule ^(.*)$ https://www.newsite.com/$1 [L,R=301] 这将重定向除旧站点https链接之外的所有内容 还尝试了其他选项,如: RewriteCond %{HTTPS} on RewriteCond %{HTTP

我正在尝试将一个域迁移到一个新域,并强制所有内容都使用https

我尝试了几次使用.htaccess的迭代,但没有成功

我试过的一件事是:

RewriteCond %{HTTP_HOST} !newsite.com$ [NC]
RewriteRule ^(.*)$ https://www.newsite.com/$1 [L,R=301] 
这将重定向除旧站点https链接之外的所有内容

还尝试了其他选项,如:

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(.+)\.oldsite.com\.com$ [NC]
RewriteRule (.*) https://newsite.com/$1 [L,R=301,QSA]

RewriteCond %{HTTP_HOST} !newsite.com$ [NC]
RewriteRule ^(.*)$ http://www.newsite.com/$1 [L,R=301] 
也没有运气


我想我错过了一些非常简单的东西…任何提示都将不胜感激

除了未替换的
字符外,您最初的尝试是正确的。要将一个域重定向到另一个域并切换到HTTPS连接,请考虑到有其他站点指向同一文档根目录:

RewriteEngine on
RewriteCond %{HTTP_HOST} !newsite\.com$ [NC]
RewriteRule (.*) https://www.newsite.com/$1 [R=301,L]
更新:
尽管上述规则是正确的,原始海报没有从重定向到,因为newsite.com没有有效的证书。

因此第一条规则适用于,但如果用户浏览到它时没有重定向到,则第一条规则是将所有请求从
oldsite.com/somepage
重定向到
https://www.newsite/somepage
。第二条规则是重定向
http://www.newsite.com/somepage
https://www.newsite.com/somepage
,如果用户输入非安全URL
http://www.newsite.com/somepage
在浏览器中。如果用户浏览到
https://www.oldsite.com
它不会重定向到新站点……这是我不理解的。它似乎应该重定向到newsite.com,不管用户是要使用http还是https,但它没有。这可能与oldsite和newsite都有相同的文档根这一事实有关?我想我的回答太仓促了。请确认
https://www.oldsite.com
http://ww.oldsite.com
指向同一个文件夹,这就是您的
.htaccess
所在的文件夹?我查看了您最初的尝试,除了第一条规则应该是
RewriteCond%{HTTP_HOST}之外,没有发现任何问题!newsite\.com$[NC]
。非常感谢您的帮助!是-两个站点使用相同的目录,并共享一个.htaccess文件。我试图改变我的第一次尝试(添加\.com),但仍然得到了相同的结果<代码>http://www.oldsite.com在新闻网站上被迫使用https,但
https://www.oldsite.com
根本不会被重定向,而是停留在oldsite.com上。