Apache 将一个域迁移到另一个域并在新域上强制使用https
我正在尝试将一个域迁移到一个新域,并强制所有内容都使用https 我尝试了几次使用.htaccess的迭代,但没有成功 我试过的一件事是: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
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
,如果用户输入非安全URLhttp://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上。