[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрет доступа ко всем XML кроме /sitemap.xml
ILYA
Как в .htaccess для Apache 2.2.23 запретить доступ ко всем XML-файлам сайта, кроме /sitemap.xml ?
Для запрета доступа ко всем XML-кам можно написать такое.
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>

Но как разрешить доступ к /sitemap.xml ?
Oyeme
<Files sitemap.xml>
Allow from all
Satisfy all
</Files>
ILYA
<Files ~ "\.xml$">
Order allow,deny
Deny from all
Satisfy all
</Files>
<Files
sitemap.xml>
Allow from all
Satisfy all
</Files>

Спасибо, так заработало, но хотелось бы, что бы файл sitemap.xml был доступен только из корня, а не из любой директории.
Так можно сделать?

Пытался попробывать так, но выдаёт ошибку 500.
<Directory />
<Files
sitemap.xml>
Allow from all
Satisfy all
</Files>
</Directory>
ILYA
Разобравшись с синтаксисом .htaccess написал
RewriteCond %{REQUEST_URI} \.xml$ [NC]
RewriteCond %{REQUEST_URI} !^/sitemap.xml
RewriteRule .* - [F,L]

Я так понимаю, что это выполняется медленнее, чем директивы Apache?
Можно ли аналогичное написать используя только директивы Apache?
VELIK505
Цитата (ILYA @ 13.12.2012 - 22:30)
Разобравшись с синтаксисом .htaccess написал
RewriteCond %{REQUEST_URI} \.xml$ [NC]
RewriteCond %{REQUEST_URI} !^/sitemap.xml
RewriteRule .* - [F,L]

Я так понимаю, что это выполняется медленнее, чем директивы Apache?
Можно ли аналогичное написать используя только директивы Apache?

Медленнее на 0.000001 сек
ILYA
Цитата (ILYA @ 13.12.2012 - 22:30)
Можно ли аналогичное написать используя только директивы Apache?

Разобравшись с синтаксисом Apache понял, что нельзя!
В контейнерах Files, Directory и Location нужно указывать или абсолютный путь, или регулярное выражение, но не URI.
Абсолютные пути использовать не хочу, так как не хочу быть зависим от физического расположения сайта, а применение регулярок будет ничем не лучше, а даже хуже по производительности и гибкости, чем вариант с Rewrite.
Так что дополнив задание:
Запретить доступ ко всем XML-файлам кроме файла sitemap.xml корневой директории и любым XML-файлам в директории /uploads/, а так же ко всем её поддиректориям, написал, с моей точки зрения, лучший вариант.
RewriteCond %{REQUEST_URI} \.xml$ [NC]
RewriteCond %{REQUEST_URI} !^/(sitemap|uploads/.*)\.xml$
RewriteRule .* - [F,L]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.