Как мод переписать весь сайт, исключая пару подкаталогов? - PullRequest
1 голос
/ 22 января 2009

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

Я использую этот код в моем файле .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 ]

2 голосов
/ 22 января 2009

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

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

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

1 голос
/ 22 января 2009

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

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

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

...