Apache-2.2
“重定向永久”與 mod_rewrite RewriteRule 之間的區別
這是一個 Apache httpd 2.2 伺服器。
我們要求通過 HTTPS 對訪問此網路伺服器的訪問進行加密。
當網路客戶端訪問我的網站http://www.example.org/ $foo (埠 80)時,我想將他們的請求重定向到https://www.example.org/ $foo 的 HTTPS 加密網站。
似乎有兩種常見的方法可以做到這一點:
第一種方法使用來自 mod_alias的“重定向”指令:
<VirtualHost *:80> Redirect permanent / https://www.example.org/ </VirtualHost>
第二種方法使用 mod_rewrite:
<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost>
“重定向永久”和 mod_rewrite 節有什麼區別。一個比另一個好嗎?
預設情況下 mod_rewrite 執行“302 Found”重定向,這是臨時的。假設其他一切都相等,
Redirect permanent
則等於RewriteRule <blah> [R=permanent]
。
一個比另一個好嗎?
Apache 現在建議使用
Redirect
frommod_alias
而不是RewriteRule
frommod_rewrite
。請參閱https://httpd.apache.org/docs/current/rewrite/avoid.html#redirect,其中說:當發現需要其他替代方案時,應將 mod_rewrite 視為最後的手段。在有更簡單的替代方案時使用它會導致配置混亂、脆弱且難以維護。