В настоящее время в apache2.conf у меня есть AllowOverride all
набор для /var/www
который просто разрешает htaccess для всех сайтов на сервере (это Ubuntu, 9.04).
Однако я бы предпочел разрешить переопределения только в каждом корневом каталоге сайта и ничего больше. Другими словами, /var/www/site1
, /var/www/site2
и т.д. могут иметь htaccess, но все остальные каталоги, включая /var/www
и /var/www/site1/content
не может.
Есть ли способ сделать это, не создавая правила для каждого сайта на сервере?
РЕДАКТИРОВАТЬ: Возможно, мой вопрос был недостаточно ясен. Но я только что попробовал пару вещей, которые не сработали так, как ожидалось. Я установил AllowOverride none
для корневого каталога, затем all
для конкретных каталогов, например:
<Directory ~ "^/var/www/site1$">
AllowOverride all
</Directory>
Однако при загрузке URL типа site1.com/section/page
страница не может быть найдена (показывает страницу с ошибкой браузера, а не мою страницу 404). Заметка section/page
не является реальным URL-адресом файловой системы, это перезапись.
Насколько я понимаю:
/var/www/site1/section
(которого не существует), попробуйте /var/www/site1
, а затем любые родительские каталоги./var/www/site1
и никаких других каталогов. Но, похоже, это не работает ...Вы можете указать произвольное количество тегов Справочника и настроить их независимо.
Вы также можете сделать это с помощью VirtualHost.
Подобно:
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>
Я знаю, что это довольно давно, но если кто-то еще столкнется с этим, вы можете использовать стандартный подстановочный знак «*» в путях, который соответствует любому символу, кроме косой черты, поэтому следующее ограничит htaccess только корневыми каталогами вашего сайта и никакими подкаталогами :
<Directory />
AllowOverride None
</Directory>
<Directory /var/www/site*>
AllowOverride All
</Directory>
<Directory /var/www/site*/*>
AllowOverride None
</Directory>
Вы можете установить это с помощью виртуальных хостов, если вы используете виртуальные хосты.
HTH,
Км