2009-06-14 5 views
2

Мне нужны два условных правила. Справочная информация:Два правила mod-rewrite

 
http://www.domain.com/.htaccess 
http://www.domain.com/index.php 
http://www.domain.com/admin/index.php 

У меня есть оба правила переписывают:

 
ROOT: 
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L] 
RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^([^/]+)/ $1.php?%1 [L] 

ADMIN: 
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] 

мне нужно как-то иметь только один файл .htaccess на уровне используют корень как правила, но правила АДМИНИСТРАТОР применяются только тогда, когда URL http://www.domain.com/admin/foo/bar/something/else и правило ROOT применяется к http://www.domain.com/foo/bar/something/else.

Благодарим вас за это, я убил целый день, пытаясь сделать это, и когда кто-то работает, другой дает мне ошибку страницы «Не найдено».

Kris

+0

Дубликат http://stackoverflow.com/questions/992054/subfolders-and-mod-rewrite – jitter

+0

джиттер: можете ли вы ответить на мой вопрос, пожалуйста? Зачем оставлять комментарий, если он не является конструктивным? – Torez

ответ

1

Я хотел бы использовать это:

RewriteEngine On 

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

# other rules 
RewriteRule ^(.*/)([^/]+)/([^/]+)$ $1?$2=$3 [L,QSA] 
RewriteRule ^([^/]+)/ $1.php [L,QSA] 

QSA флаг (строка запрос добавить) заменить RewriteCond %{QUERY_STRING} (.*) директивы.

2
RewriteCond %{REQUEST_URI} !^/admin/ 
RewriteCond %{QUERY_STRING} (.*) 
RewriteRule ^(.*/)([^/]+)/([^/]+) $1?$2=$3&%1 [L] 
RewriteCond %{REQUEST_URI} !^/admin/ 
RewriteCond %{QUERY_STRING} (.*) 
RewriteRule ^([^/]+)/ $1.php?%1 [L] 

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

Возможно, вы захотите добавить комментарии или параграф, объясняющий ваши Условия. –

+0

хаос: спасибо за ваш быстрый ответ. Кажется, это не работает ...? Я даже пытался изменить несколько вещей и до сих пор не повезло :( – Torez

+0

Некоторые исправления. Попробуйте сейчас. – chaos

Смежные вопросы