2014-01-29 64 views
1

我正在構建一個自動加載php函數的站點,以檢查控制器中是否存在類名。這個函數在index.php中,並且運行在網站上的每個網址上,然後根據情況用php重定向。從htaccess mod中刪除一個子目錄改寫

我已將一個新的子目錄添加到稱爲引擎的文檔根目錄中。在這個子目錄中,有一些獨立的類需要運行,而不需要通過文檔根目錄下的index.php中的自動加載功能。

我正在尋找一個.htaccess規則,它允許我從默認的重寫規則中加載index.php來排除引擎子目錄及其中的所有文件/文件夾。

下面是我的.htaccess文件的示例,顯示了我嘗試的3個不同的排除規則。

規則2和規則3沒有任何影響。規則1將引擎子目錄內的所有請求重定向到該子目錄中的index.php。當使用規則1時,似乎丟失了請求uri的其餘部分。

例如,如果我想加載engine/subfolder/lib/file.php規則,只需將我發送到engine/index.php。我想我可能會在規則中缺少一些需要附加其餘請求URI的規則。

Options +FollowSymLinks 
RewriteEngine on 

#rule 1 
RewriteCond %{REQUEST_URI} !^/engine 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ engine [L,QSA] 

#rule 2 
RewriteRule ^(engine)($|/) - [L] 

#rule 3 
RewriteRule ^(engine).* - [NC,L] 

RewriteRule ^([^/\.]+).html$ index.php?controller=contents&method=viewGeneric&view=generic&link=$1 [L] 

RewriteRule ^(/)?$ index.php?controller=contents&method=viewHome&view=home [L,QSA] # Default load 

TL; DR所以我的問題是:我該如何排除目錄從我的htaccess規則

回答

0

TL的休息; DR所以我的問題是:我該如何排除目錄從我的其他htaccess規則

你的第一條規則是這裏的主要罪魁禍首。有這樣的規則:

Options +FollowSymLinks 
RewriteEngine on 

# skip engine from further rules 
RewriteRule ^engine($|/) - [L,NC] 

RewriteRule ^([^/\.]+)\.html$ index.php?controller=contents&method=viewGeneric&view=generic&link=$1 [L,QSA] 

RewriteRule ^/?$ index.php?controller=contents&method=viewHome&view=home [L,QSA]