2012-09-19 139 views
1

我想將所有非文件,非目錄重定向到index.php,因此存在的所有內容都可以直接訪問 - 除了一個目錄到的index.php)如何排除除一個目錄以外的所有文件和目錄,RewriteCond

我所擁有的是:

# Files 
RewriteCond %{REQUEST_FILENAME} !-f 

# Directories except /orderfiles/* 
RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR] 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php [L,QSA] 

這適用於目錄內/ orderfiles,但文件內/ orderfiles還是到該文件。我嘗試添加

RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR] 
RewriteCond %{REQUEST_FILENAME} !-f 

但這種休息和每一個文件發送到index.php文件。

回答

4

你接近,你想是這樣的:

# Files 
RewriteCond %{REQUEST_FILENAME} !-f 

# Directories 
RewriteCond %{REQUEST_FILENAME} !-d 

# except /orderfiles 
RewriteRule !^/?orderfiles index.php [L,QSA] 

我意識到我輸錯了什麼,我試圖做的,我的意思「但發送一個目錄的index.php」 (我編輯我的問題更準確)。我想/被路由orderfiles到index.php

那麼你有什麼是正確的,但你需要改變這一行:

RewriteCond %{REQUEST_FILENAME} ^/(orderfiles/)* [OR] 

到:

RewriteCond %{REQUEST_URI} ^/orderfiles/ [OR] 
+0

感謝快速反應 - 我意識到我打錯了我想要做的事情,我的意思是「但發送一個目錄到index.php」(我編輯我的問題更加準確)。我希望/ orderfiles被路由到index.php。 –

+0

謝謝!我仍然遇到麻煩(沒有像你發佈的括號一樣,它不會工作),所以我改變了^(/ orderfiles /)*到^/new/orderfiles /,我有RewriteBase/new/above,所以我沒有意識到我不得不包含/新/再次。這使所有的工作。再次感謝。 –

相關問題