2009-01-21 2 views
1

У меня небольшая проблема. У меня хорошая настройка, мода которой переписывает все запросы на сайт - единственное, что она переписывает каталоги, которые я не хочу включать.Как мне переписать весь сайт за исключением нескольких подкаталогов?

Я использую этот код в моем файле .htaccess:

RewriteEngine on 
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2 [L] 
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?section=$1&page=$2&split=$3 [L] 

В идеале я хотел бы иметь возможность исключить два каталога - доступ/и редактировать/- редактировать также должна/иметь свой собственный набор правил:

RewriteRule ^([^/\.]+)/?$ index.php?action=$1 [L] 

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

Любые советы?

ответ

2

Использование RewriteCond

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/(access|edit)/ 
RewriteRule ^([^/\.]+)/?$ index.php?section=$1 [L] 
... 

(Это проверялось, но это должно быть близко)

+0

Да, это должно быть близко. А затем добавьте RewriteCond для редактирования subdir. – PEZ

+0

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

+0

FWIW Я думаю, что это должно быть% {REQUEST_URI} вместо $ {REQUEST_URI} –

1

Альтернативная идея (также непроверенные):

RewriteEngine on 
RewriteRule ^/access/ - [L] 
RewriteRule ^/edit/([^/\.]+)/?$ /edit/index.php?action=$1 [L] 
... (other rules) 

которая избавит вас от необходимости повторите RewriteCond перед каждым правилом.

+0

Да, это определенно более элегантно. –

+0

Вторая линия работает. Но сервер по-прежнему использует другие правила для каталога edit /. – different

+0

Возможно, попробуйте менее ограничительное регулярное выражение? например ^/edit /(.*)$ –

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