有人可以向我解釋這個 RewriteCond 嗎?尤其是最后的 HTTP/ 部分:
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.XXXXXXXXXXXXXXXX.com/ [R=301,L]
我已經在這里找到了對前半部分條件的很好的解釋,但我仍然對“/index.php\ HTTP/”部分感到困惑。
再說一遍:為什么是“HTTP/”?
謝謝你們!
uj5u.com熱心網友回復:
我已經在這里找到了對前半部分條件的很好的解釋,但我仍然對“/index.php\ HTTP/”部分感到困惑。
這種解釋省略了一些細節。THE_REQUESTserver 變數包含 HTTP 請求標頭的第一行。并將包含以下形式的字串:
GET /index.php HTTP/1.1
因此,它包含 3 條資訊,以空格分隔。您有請求方法(GET、POST、OPTIONS、HEAD 等)、URI 和使用的協議/版本(在本例中為 HTTP v1.1)。
對于這個特定的正則運算式,您不一定需要包含最后HTTP/一部分,只需包含空格即可。但是,通過包含http/它使正則運算式更易于閱讀且不易出錯。以空格結尾(您看不到)不是最佳做法。
以下是等效的:
RewriteCond %{THE_REQUEST} \s/index\.php\s
這使用空格 ( \s)的速記字符類,而不是轉義文字空間(因此您可以“看到”空格)。
或者,使用雙引號將引數括起來:
RewriteCond %{THE_REQUEST} " /index\.php "
(雖然,乍一看這幾乎像是一個錯誤。)
首先包含此條件(RewriteCond指令)的原因是,如果您稍后將請求重寫index.php(前端控制器模式),則可以防止重寫回圈。THE_REQUEST當 Apache 在內部重寫時,不會在整個請求中更新(與其他變數不同)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337149.html
標籤:.htaccess
