Подпапки и мод-перезапись

Мне нужно изменить это текущее правило перезаписи, чтобы оно соответствовало папке администратора. Вот мой текущий код перезаписи мода:

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

У меня такая структура папок:

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

Если файл .htaccess находится в папке "admin", он работает правильно. Я получил:

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
)

Я хочу, чтобы мод-перезапись распознавала эту административную папку и является фактическим каталогом и использовала отдельное правило перезаписи.

Заранее спасибо.


person Torez    schedule 14.06.2009    source источник


Ответы (2)


Добавьте это в свой корневой .htaccess:

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

Добавьте это сразу после RewriteEngine On. Ключевым моментом здесь является [L], который сообщает mod-rewrite прекратить выполнение остальных правил, если оно совпадает. Если вам нужно более одного правила для папки администратора, просто добавьте больше операторов RewriteRule, но не забудьте добавить [L] только к последнему.

Это должно сработать.

person Jerome Elkins    schedule 18.06.2009

Добавлять

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

перед другим условием. Это должно делать свое дело.

Другой способ - включить условие в правило напрямую через

RewriteRule ^admin/(rest_of_regex)$ (regex_stuff) [L]
person Residuum    schedule 18.06.2009