.htaccess - исключение определенных типов(расширений) файлов. Как реализовать?
На сайте генерируется sitemap по такому принципу: /public/{название хоста}/sitemap.xml. Размещается не в корне public, так как админка опционально дает возможность настраивать мультисайт и для каждого host нужна своя карта сайта.
Вопрос в следующем, при таком .htaccess:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
Получается следующее. Например сгенерированная карта-сайта для site-1 доступна по двум URL:
Выяснил, что такое поведение происходит из-за RewriteRule ^(.*)$ index.php [QSA,L] (если закомментировать данное правило 2. перестает работать). Но как не сложно догадаться - его убирать нельзя :)
Соответственно, возможно ли скорректировать .htaccess так, чтобы правило: RewriteRule ^(.*)$ index.php [QSA,L] не учитывало расширение *.xml
В такого рода настройках - опыта не много (точнее его почти нет :) ), поэтому решил попросить помощи.
Ответы (1 шт):
Посмотрев схожие темы нашел решение, в .htaccess добавить следующее условие:
RewriteCond %{REQUEST_URI} !^/[^/\.]*\.xml$