Apache-2.4

Apache 對單個規則不區分大小寫的 mod_rewrite

  • September 4, 2017

我正在使用 mod_rewrite 搜尋引擎友好的 URL。我有這條線很好用:

RewriteRule ^Pay ./pay.php [L] #Pay

http://example.com/pay但如果訪客類型(注意小寫),我也想匹配。我嘗試過使用NC,但出現 500 錯誤。我嘗試制定 2 個單獨的規則,一個大寫一個小寫,但又出現 500 錯誤。

這可以使用正則表達式在一行上完成嗎?就像是:

RewriteRule ^([P-p])ay ./pay.php [L] #Pay

如果是這樣,正確的方法是什麼?如果不是,我怎麼能在不使用 mod_spelling 的情況下做到這一點?

RewriteRule ^Pay ./pay.php [L] #Pay

由於無限的重寫循環,您會收到 500 錯誤。如果您只是使上述不區分大小寫,那麼重寫的 URL 即。/pay.php匹配現在不區分大小寫的模式^Pay等。

在這種情況下,您可以簡單地使您的模式更具限制性並僅匹配“pay”,而不是任何簡單地“pay”開頭的 URL 路徑。例如:

# Pay
RewriteRule ^pay$ pay.php [NC,L]

我還刪除了susbstitution./上的前綴,這不是必需的。此外,Apache 不支持行尾註釋。

但是請注意,在使這種重寫不區分大小寫時,它可能會導致重複的內容

引用自:https://serverfault.com/questions/871685