重寫規則。* -和=H噸噸磷一種在噸H或我_從一個_一世開_:和=H噸噸磷一種在噸H這R一世從一種噸一世這ñ:E=HTTP_AUTHORIZATION:%{HTTP:Authorization},這是什麼意思?
我發現 Wordpress 的新版本(V5.9)在 .htaccess 中添加了這一行:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
舊版本的 Wordpress 沒有這一行。這是什麼意思?我可以刪除它嗎?
如果您沒有在 WordPress 中使用 HTTP 身份驗證,則可以將其刪除。
如果您使用 PHP 作為 Apache 模組,則可以將其刪除。(也許 WP 在生成
.htaccess
文件時會檢測到這一點?)*旁白:*但是,由於此指令位於 WordPress 程式碼塊內(即在
# BEGIN WordPress
/# END WordPress
註釋標記之間),因此如果您刪除它,那麼 WordPress 只會“嘗試”並稍後再放回去。(出於這個原因,您應該避免手動編輯 WP 程式碼塊。)有這個指令
.htaccess
不會導致任何問題。當 PHP 作為 CGI 安裝時,Apache 會阻止
Authorization
HTTP 請求標頭(與 HTTP 身份驗證一起使用)傳遞給 CGI 腳本(即本例中的 PHP)。這是一項“安全功能”,可防止將使用者的憑據傳遞給所有 CGI 腳本(如果您不控制伺服器,這些腳本可能不受信任)。PHP 通常
$_SERVER['HTTP_AUTHORIZATION']
從 HTTP Authorization 標頭設置超全域(和關聯的數組元素),但如果它已被 Apache 剝離,則它不能。該
RewriteRule
指令.htaccess
試圖通過將HTTP_AUTHORIZATION
環境變數設置為Authorization
HTTP 請求標頭的值來“修復”此問題(這是在將請求傳遞給 PHP 之前)。然後 PHP 將HTTP_AUTHORIZATION
env var 分配給$_SERVER
超全域數組。所以,理論上,它在做同樣的事情。但是,根據伺服器配置,這不一定有效。或者,要明確允許“將 HTTP 授權標頭作為 CGI 變數傳遞給腳本”,您可以設置
CGIPassAuth On
(Apache 2.4.13+).htaccess
,這應該允許 PHP 看到Authorization
標頭。但是,根據伺服器配置,這也可能不起作用。參考: