Натупил с .htaccess, не открываются файлы в корне

[Удален]
3953

Доброго времени, господа.

Делал самописный сайт, с задачей пилить красивые ЧПУ. Обработку урла делает php, а не htaccess (если это имеет значение). В т.ч. была задача ограничить от прямого доступа через браузер все папки кроме (А|В|С).

.htaccess я благополучно спер из какого-то урока (т.к. в этом деле полный дуб и кроме сеошных мелочушек никогда ничего с ним не делал), и пошел работать с php. Сейчас сайт готов и все работает, но обнаружилась проблема: теперь не могу впихнуть в корень ни favicon, ни robots, ни sitemap — они не открываются, и более того — подхватываются php-контроллером и браво редиректятся им на 404. Следовательно, не откроются и поисковиком.

Новая задача: открывать в корне файлы с допустимыми расширениями: ico, txt, xml, ЕСЛИ таковые существуют физически БЕЗ запуска index.php (впереди еще партнерки, почты, аналитиксы, и прочий обвес).

Нагуглить как заставить .htaccess работать как сейчас, но не трогая файлы с допустимыми расширениями в корневой папке не могу (таких "гениев" до меня, видимо, не было :confused:). Помогите, плиз.

Вот что есть в .htaccess сегодня:

Options All -ExecCGI -Indexes -Includes +FollowSymLinks
RewriteEngine On
RewriteBase /

AddDefaultCharset utf-8

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

#Собственно, коротенький список папок, к которым разрешен доступ через браузер
RewriteRule ^(img|images|js|css|design|tmp) - [L]

#То, что было стырено для ЧПУ:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]
[umka]
На сайте с 25.05.2008
Offline
456
#1
NerZool:
#То, что было стырено для ЧПУ:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Строчка явно лишняя :)

Лог в помощь!
[Удален]
#2
'[umka:
;12879592']Строчка явно лишняя :)

Спасибо за внимание к моей теме в столь позднее время суток))

Пробовал её удалять, но с ней начинают открываться вообще все файлы во всех директориях. А мне нужно запретить все, кроме разрешенных директорий (где открываются любые файлы) и файлов разрешенных расширений в корне. Я то ли диктатор, то ли параноик.

Пока ждал ответа, покурил синтаксис, и выдавил из себя что-то вроде:

RewriteRule .*\.(txt|xml|ico) - [NC,L]

Это работает, но тоже для всего... хоста(?), а не только для корня. Хотя, в принципе, наверное так и правильней будет. Отдавать что-то небезопасное в xml все равно не буду.

J
На сайте с 20.02.2014
Offline
120
jkm
#3


RewriteRule ^[^/]+\.(txt|xml|ico)$ - [NC,L]
[umka]
На сайте с 25.05.2008
Offline
456
#4

Правильней будет отдельно запретить открывать файлы в определённых директориях.

В каждую такую директорию можно положить свой .htaccess с таким содержимым:

Order allow,deny

И корневой .htaccess меньше будет загромождён и вычислительная нагрузка вцелом будет немного ниже.

[Удален]
#5
jkm:
RewriteRule ^[^/]+\.(txt|xml|ico)$ - [NC,L]
'[umka:
;12879736']вычислительная нагрузка вцелом будет немного ниже.

Благодарю за решение и расширение моего взгляда на вещи, господа.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий