簡體   English   中英

如何將一個域重定向到另一個,非www重定向到www,並使用.htaccess文件強制實施SSL

[英]How to redirect one domain to another, non-www to www, and enforce SSL with .htaccess file

我正在嘗試處理.htaccess文件中的3個重寫任務:

  1. 將example1.com重定向到example2.com
  2. 將非www重定向到www
  3. 將http重定向到https

是的,我意識到所有這些問題都是在此處單獨提出和回答的,但是我試圖了解如何將這些答案結合在一起,以實現最有效的重寫。 另外,當我嘗試為#1或#2或#3中的每一個實施單獨的重寫時,它們會相互沖突,並使我進入重定向循環。

我能找到的最接近的是Amine Hayyoussef將多個域重定向到文件夾+非www到www

 # redirect non-www to www ReWriteCond %{HTTP_HOST} !^www\\. RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301] ReWriteCond %{HTTP_HOST} ^www.domain.com [OR] ReWriteCond %{HTTP_HOST} ^www.domain.co.uk [OR] ReWriteCond %{REQUEST_URI} !domain/ ReWriteRule ^(.*)$ domain/$1 [L] 

這是我目前在.htaccess文件中所擁有的:

# Redirect example1.com to www.example2.com
RewriteCond %{HTTP_HOST} ^example1\.com$ [NC]
RewriteRule ^(.*)$ https://www.example2.com [R=301,L]

# Redirect www.example1.com to www.example2.com
RewriteCond %{HTTP_HOST} ^www.example1\.com$ [NC]
RewriteRule ^(.*)$ https://www.example2.com [R=301,L]

# Force non-www to www
RewriteCond %{HTTP_HOST} ^example2.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]

問題在於,當導航到http://www.example2.com時,它應該強制執行SSL並重寫為https://www.example2.com時,無法重寫任何內容。

最終,我敢肯定,有一種更干凈的方法可以用更高效的代碼來解決所有3次重寫。 對組合這些邏輯位或將它們分開以簡化維護性的建議感興趣。

謝謝!

所有3個重定向都可以在一個重定向規則中完成:

RewriteEngine On

RewriteCond %{REQUEST_SCHEME} =http
RewriteRule ^ https://www.example2.com%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{HTTP_HOST} ^(?:www\.)?example1\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^example2\.com$ [NC]
RewriteRule ^ https://www.example2.com%{REQUEST_URI} [R=301,L,NE]

確保這是最重要的規則,然后從新的瀏覽器進行測試。

假定example1.comexample2.com都在同一主機上並指向同一目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM