我想重定向去http://example.com到https://example.com需要重定向所有流量到https
同任何流量http://example.com/about到
我認爲這將是這樣的:
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
我想重定向去http://example.com到https://example.com需要重定向所有流量到https
同任何流量http://example.com/about到
我認爲這將是這樣的:
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
這適用於我:
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
如果流量通過非SSL HTTP進入,則重定向到用戶最初嘗試訪問的任何頁面的HTTP等效項。它也不涉及任何mod_rewrite選項,所以它很容易閱讀。爲什麼大家都覺得需要明確設置重定向的HTTP代碼,並將其中一個重寫標記爲「最後一個」?說真的,在過去的幾天裏我看到了幾十個相同的htaccess規則。
我認爲如果重寫是「糾正」動作,301響應可能比默認的302響應更合適,並且需要明確的聲明。就'L'而言,如果不再有任何進一步的規則匹配,就沒有必要了,但是如果這樣做的話,通過擦除新的方案/主機信息可以很容易地阻止重定向。考慮到大多數人「忘記」一半時間發佈其他規則集,這是更安全的選擇。如果沒有更多的規則,我同意這只是混亂,我真的不明白,當他們在文件中唯一的規則使用它... – 2010-07-13 19:23:18
雖然這似乎工作,這是錯誤的:這因爲這依賴於客戶端發送的「主機」頭。此外,主機頭還可以包含端口:因此,如果客戶端請求中的主機頭包含端口:80,則該位置將具有端口:80,其中包含https,這是錯誤的。請參閱http://serverfault.com/questions/814153/apache-returning-wrong-location-header。從t-richards http://stackoverflow.com/a/27930928/1504300的答案似乎更好 – reallynice 2016-11-10 09:12:35
@reallynice你可以硬編碼主機頭,以及?對於只有一個的服務器。通常你可能沒有訪問服務器主配置文件,但你有.htaccess權限,所以在這種情況下,我只是使用它,但硬編碼主機。 – eis 2017-01-15 15:24:39
根據Apache documentation,對於此任務,使用mod_alias
比mod_rewrite
更合適。也就是說,以重定向所有的HTTP流量HTTPS,一會:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent/https://www.example.com/
</VirtualHost >
<VirtualHost *:443>
ServerName www.example.com
# ... SSL configuration goes here
</VirtualHost >
有兩點需要注意有關此配置:
VirtualHost
指令僅在「服務器配置」上下文中有效。mod_rewrite
指令是在mod_alias
指令之前處理的。如果您的.htaccess
文件中已有大量RewriteRule
s,則最好使用mod_rewrite
配置。在我的情況下,「重定向永久」必須是:'重定向永久http://www.example.com https:// www.example.com',否則在瀏覽器中我得到一個循環錯誤 – 2017-05-12 10:11:22
這是一個previous answer using .httaccess但增加在評論中提議的變更,以及一些從我:
RewriteEngine on
RewriteBase/
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://my.domain.name%{REQUEST_URI} [L,R=301]
注:
%{HTTPS}
在使用http時未設置爲off
,但爲空,因此!on
比off
更可靠。%{SERVER_NAME}
。如果你考慮使用它,請檢查this discussion的警告 - 它依賴於其他配置是正確的。R=301
表示它是永久重定向,因爲它通常意味着在這種情況下。如果您認爲這是暫時的,那麼可以省略或指定爲R=302
。L
表示它是應用於此請求的最後一條規則。如果您懷疑或知道在此之後還有其他規則您不想申請,請留下它。如果這是文件的唯一規則,您可以刪除它。
如果您不想使用您的實際域名,請針對所有域名問題使用example.com。 – animuson 2010-07-13 17:31:09
可能重複的[如何將所有HTTP請求重定向到HTTPS](http://stackoverflow.com/questions/4083221/how-to-redirect-all-http-requests-to-https) – Sadurnias 2016-02-11 06:12:55