2009-06-14 6 views
1

Ich muss diese aktuelle Re-Write-Regel ändern, um für einen Admin-Ordner unterzubringen. Hier mein aktueller mod-Rewrite-Code ist:Unterordner und Mod-Rewrite

 
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] 

Ich habe diese Ordnerstruktur:

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

Wenn die .htaccess-Datei im "admin" ist Ordner es korrekt funktioniert. Ich bekomme:

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

Aber, wenn seine im Stammordner ich:

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

ich die Mod-Rewrite wollen, dass Admin-Ordner zu erkennen und ein tatsächliches Verzeichnis und verwenden eine separate Re- Regel schreiben

Vielen Dank im Voraus.

Antwort

1

diese in Ihre Wurzel .htaccess:

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

dieses Recht hinzufügen nach dem RewriteEngine On. Der Schlüsselpunkt ist hier [L], der mod-rewrite anweist, die Ausführung der restlichen Regeln zu stoppen, wenn diese übereinstimmt. Wenn Sie mehr als eine Regel für den Admin-Ordner benötigen, fügen Sie einfach weitere RewriteRule-Anweisungen hinzu, aber denken Sie daran, nur die [L] zur letzten hinzuzufügen.

Das sollte es tun.

2

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

vor dem anderen Zustand hinzufügen. Das sollte den Trick machen.

Eine andere Möglichkeit wäre die Bedingung in der Regel enthalten sein direkt über

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