Подпапки и мод-переписать - PullRequest
1 голос
/ 14 июня 2009

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

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 находится в папке «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
)

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

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

Ответы [ 2 ]

2 голосов
/ 18 июня 2009

Добавить

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

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

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

RewriteRule ^admin/(rest_of_regex)$ (regex_stuff) [L]
0 голосов
/ 18 июня 2009

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

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

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

Это должно сделать это.

...