我需要一個好的“.htaccess”規則來將所有 apache 請求重定向到單個 php 檔案,除了“檔案”檔案夾(用于 js、css 等)和“靜態”檔案夾(用于靜態 .html 檔案,如錯誤頁)。
因為這是一個開發站點,所以它現在都在一個子檔案夾中。這就是我使用“子檔案夾”的原因。
我目前有以下內容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/(SubFolder/files|SubFolder/static)(/|$)
RewriteRule ^(.*)$ /SubFolder/index.php?path=$1 [NC,L,QSA]
當我訪問一個檔案時,我得到一個“內部服務器錯誤”。當我檢查 apache 日志時,它報告:“由于可能的配置錯誤,請求超出了 10 個內部重定向的限制。”
我懷疑這是由于我的規則反復出現,但我不明白為什么。你能幫我嗎?
uj5u.com熱心網友回復:
我懷疑這是由于我的規則反復出現,但我不明白為什么。
是的,您的規則也匹配/SubFolder/index.php,因此會反復重寫。您也可以為此添加一個例外。例如:
RewriteCond %{REQUEST_URI} !^/SubFolder/index\.php$
RewriteCond %{REQUEST_URI} !^/(SubFolder/files|SubFolder/static)(/|$)
RewriteRule (.*) /SubFolder/index.php?path=$1 [L,QSA]
如果這是您擁有的唯一規則,則RewriteBase不需要該指令。(NC此規則也不需要該標志,因為.*無論如何都匹配大小寫字母。)
如果需要,您可以組合條件:
RewriteCond %{REQUEST_URI} !^/SubFolder/(index\.php|files|static)(/|$)
RewriteRule (.*) /SubFolder/index.php?path=$1 [L,QSA]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/459218.html
