2015-06-25 2 views
1

Я пытаюсь перенаправить все, кроме вложенных папок admin и api к admin, так:Mod переписать все, кроме конкретной вложенной

/   - redirects to /admin 
/some-url - redirects to /admin 
/admin  - doesn't redirect 
/admin/1 - doesn't redirect 
/api  - doesn't redirect 
/api/v1/etc - doesn't redirect 

но то, что у меня до сих пор не правильно перенаправлять. Вот мой mod_rewrite:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} !^/(admin|api) 
    RewriteRule^/admin [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule^./index.php [L] 

</IfModule> 

ответ

0

Вы должны использовать THE_REQUEST переменных вместо REQUEST_URI, как REQUEST_URI меняет свое значение из-за последнее правило, а затем в следующей итерации mod_rewrite условия перезаписи в первом правиле возвращает истину.

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{THE_REQUEST} !/(admin|api) [NC] 
    RewriteRule^/admin [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule^./index.php [L] 

</IfModule> 
Смежные вопросы