Dot-Htaccess

如何將 example.com 從 HTTPS 重定向到 HTTP,然後將 HTTP example.com 重定向到 newdomain.com?

  • December 17, 2015

截至目前,我使用此規則(在 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是主域)。請指教,如果這有意義。

感謝@Shane Madden 的所有幫助。都搞定了。這是我曾經和正在使用的 .htaccess (of 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 證書就這麼簡單。

有趣的要求,我不確定我是否理解您為什麼要這樣做 - 只是需要兩個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]

引用自:https://serverfault.com/questions/324455