如何将 example.com 从 HTTPS 重定向到 HTTP,然后将 HTTP example.com 重定向到 newdomain.com?

如何将 example.com 从 HTTPS 重定向到 HTTP,然后将 HTTP example.com 重定向到 newdomain.com?

到目前为止,我使用此规则(在 example.com 的 .htaccess 中)将 HTTPS/HTTP example.com 重定向到 newdomain.com:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

通过搜索,我发现以下规则将 HTTPS 重定向到 HTTP:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

我如何将它们组合起来,以便 - -https://example.com重定向到http://example.com然后http://example.com重定向到http://newdomain.com

我无法解释为什么我没有要求这样的事情 - - HTTPS /重定向到http://newdomain.com。简而言之,我已经搜索并询问过,建议的规则不起作用,可能是因为我使用的是自签名证书,并且两个域使用相同的证书(example.com 是附加域,newdomain.com 是主域)。如果有意义,请提供建议。

答案1

有趣的要求,我不确定我理解你为什么要这样做 - 这只是让301到达 newdomain.com 需要两个响应而不是一个..但是,我想这样就可以了:

RewriteEngine on

# First rule - if this is an SSL connection, then redirect
# to http://example.com then stop processing other rules
RewriteCond %{HTTPS} on
RewriteRule (.*) http://example.com/$1 [R=301,L]

# Second rule - all other requests, redirect to http://newdomain.com.
RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

答案2

感谢@Shane Madden 的所有帮助。一切都解决了。这是我过去和现在使用的 .htaccess(example.com)规则:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^.*example\.com$ [NC]
RewriteRule ^(.*)$ http://newdomain.com/$1 [R=301,L]

之前不起作用的原因是两个域名使用相同的 SSL 证书(因为一个是另一个域名的 Cpanel 帐户下的附加域名)。“HTTPS 重定向不适用于附加域。”

因此,我所做的就是为 example.com 创建一个新的 cpanel 帐户。也就是说,为 example.com 获取单独的 SSL 证书 就这么简单。

相关内容