[英]How to redirect one domain to another, non-www to www, and enforce SSL with .htaccess file
我正在嘗試處理.htaccess文件中的3個重寫任務:
是的,我意識到所有這些問題都是在此處單獨提出和回答的,但是我試圖了解如何將這些答案結合在一起,以實現最有效的重寫。 另外,當我嘗試為#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.com
和example2.com
都在同一主機上並指向同一目錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.