Apache-2.2

使用 Apache2 為 HTTPS 從域中刪除“www”?

  • July 26, 2012

剛剛安裝了一個全新的 12.04 ubuntu 伺服器。

總是使用樣板重定向來刪除 www 但它看起來不支持 https 所以我開始四處尋找。嘗試了我發現的所有內容,並且以某種方式http“www”刪除效果很好,但https不會重定向。

這是我使用的(在 /etc/apache2/conf.d 的 bp_rewrite.conf 文件中):

# Rewrite "www.example.com -> example.com"

<IfModule mod_rewrite.c>
 RewriteCond %{HTTP_HOST} ^www\.(.+)
 RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
 RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
</IfModule>

有沒有人經歷過這個?

您的範常式式碼看起來有點過於復雜,但與我使用的非常接近:

   RewriteCond %{HTTPS}s%{HTTP_HOST} ^(on(s)|offs).+\.(.+\..+)$
   RewriteRule ^(.*)$ http%2://%3$1 [R=301]

注意:這只會撕掉域名最後兩部分前面的任何內容。所以你的使用者可以輸入what.the.example.com,它會減少到example.com. 如果您的域名是example.co.uk或包含三個部分的內容,則必須修改第一行的末尾以適應。

為了RewriteRule觸發,兩個RewriteCond指令都必須為真。

這個怎麼樣:

<IfModule mod_rewrite.c>
   RewriteCond %{HTTP_HOST} ^www\.(.+)$ [OR]
   RewriteCond %{HTTPS} !=on
   RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
</IfModule>

現在,如果只有一個條件保持為真(對於https://www.example.com/,只有第一個條件為真),RewriteRule則應用

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