0
我正在修復服務器上的我的Apache(2.4.12)配置文件,該服務器提供三個不同的域名。我爲每個站點有不同的配置文件。我不能爲我的生活弄清楚如何完成以下兩項:將所有請求重定向到HTTPS並將www重定向到非www
- 重定向所有
http
請求https
,保持請求(子域/主機和文件路徑)的所有其餘完全一樣 - 重定向所有
www
請求非www
我讀過,這可以在一個步驟中完成,如果我只有一個*:80
虛擬主機,把重寫規則出現(在我的子域的其餘部分都*:443
VirtualHosts除了www
),但我不知道如何去做。在SO這些答案沒有工作:
- 在this question接受的答案是不正確的(僅做了
https
重定向) - This answer不爲我工作 - 只有
https
重定向作品。 - This question不處理通配符子域,因此不適用。
- This question也不適用,因爲它不處理子域。
編輯:這是我在下面mike.k's answer的評論引用代碼。
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP_HOST} www.example.com
RewriteRule ^(.*)$ https://example.com/$1 [R=permanent,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://example.com%{REQUEST_URI}
</VirtualHost>
看來,'在你的代碼的4行$ 1'不應之前有一個空間翻轉(我收到一個語法錯誤)。我現在正在測試,我會告訴你,如果它在刪除該空間時起作用。 – vaindil
不幸的是,它不起作用。我用你的代碼完全按照你的代碼(根據我以前的評論固定的「$ 1」),但是使用我的主機名信息。 'https'重定向工作正常,但'www'未被刪除。我將確切的設置添加到OP中,以便您可以看到它。 – vaindil
你對這個空間是正確的,我在粗心大意的打字中引入了它。把'$'放在你的Edit中'www.example.com'的末尾,所以'RewriteCond%{HTTP_HOST} www.example.com $' –