2009-06-14 85 views
1

我需要改變這個當前的重寫規則,以適應管理文件夾。這是我目前的國防部重寫代碼:子文件夾和mod重寫

 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+?)/([a-z]+?)/(.*)$ index.php?model=$1&view=$2&params=$3 [L,NS] 

我有這樣的文件夾結構:

 
ROOT: http://www.domain.com/ 
ADMIN: http://www.domain.com/admin/ 

如果.htaccess文件是在「管理」文件夾,它工作正常。我得到:

 
URL: http://domain.com/admin/faq/edit/13/asc 
(NOTE: http://domain.com/admin/.htaccess) 
Array 
(
    [model] => faq 
    [view] => edit 
    [params] => 13/asc 
) 

但是,當它的根文件夾中,我得到:

 
URL: http://domain.com/admin/faq/edit/13/asc 
(NOTE: http://domain.com/.htaccess) 
Array 
(
    [model] => admin 
    [view] => faq 
    [params] => edit/13/asc 
) 

我想國防部重寫認識到管理文件夾,是一個實際的目錄,並使用單獨的重寫規則。

在此先感謝。

回答

1

添加到您的根的.htaccess:

RewriteCond ^admin/ 
RewriteRule (whatever rule you need for the admin folder) [L] 

RewriteEngine On後添加這一權利。這裏的關鍵點是[L],它告訴mod-rewrite停止執行其餘的規則,如果這匹配。如果您需要管理文件夾的多個規則,只需添加更多的RewriteRule語句,但請記住只將[L]添加到最後一個。

這應該做到這一點。

2

其他條件之前添加

RewriteCond ^admin/ 
RewriteRule (your Rule) [L] 

。這應該夠了吧。

另一種方式是,包括直接在規則的條件通過

RewriteRule ^admin/(rest_of_regex)$ (regex_stuff) [L]