對于網站,我想使用 .htaccess 設定重定向。我的檔案夾結構類似于
/
/folderA/
/folderB/
/index/
其中 folderA 和 B 以及 index 包含子檔案夾和檔案。現在,我想將對 root/和所有不存在的檔案夾和檔案的所有請求重寫為index. 它應該被屏蔽。在我看來,這是一項簡單的任務,但我無法讓它發揮作用。到目前為止,我試過
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /index/$1 [L]
重定向以某種方式起作用,但是當我直接呼叫根http://example.org/時它不起作用 。根是否也被視為有效目錄或被排除在 RewriteCond 檢查中?任何想法如何實作這一點?
uj5u.com熱心網友回復:
是的,根也是一個目錄。您將需要添加另一個規則來僅重寫根。例如:
RewriteRule ^$ /index/ [L]
由于根是一個目錄,您不妨將其從第一條規則中排除。IE。更改(.*)為(. )。
但是,如果您要重寫的 URL/index/...也不存在*1,則您現有的規則將導致重寫回圈(500 錯誤)。例如。如果您請求/foo,它會重寫為/index/foo,如果/index/foo不存在,則它會重寫/index/index/foo為/index/index/index/foo等。
您將需要添加一個額外的條件(或使用負前瞻)來防止對/index/...自身的請求被重寫。
( *1除非您.htaccess在/index包含 mod_rewrite 指令的子目錄中有另一個檔案并且您沒有啟用 mod_rewrite 繼承。)
例如:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (. ) /index/$1 [L]
RewriteRule ^$ /index/ [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/353076.html
