Директивы .htaccess

Автор savirmir, 03 августа 2007, 08:57:36

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

savirmir

Поискал на форуме и выяснилось, что конкретных советов по этому нужному файлу мало...
Может кому пригодится... Я постараюсь выложить часть скомпилированной документации из разных источников... Авторства, уж извините, указывать не буду, да и сделать это крайне затруднительно...
Хочу только выразить большую благодарность Mavn, от которого я впервые узнал о таком великолепном настроечном способе... и за его ценные советы...
Итак...
C помощью файла .htaccess можно быстро блокировать или, напротив, разрешать доступ как определенным IP-адресам, так и целым диапазонам, что требуется, — создать в требуемой папке текстовый файл .htaccess следующего содержания:


Order deny,allow
Deny from all
Allow from 62.148.3.4
Allow from 62.148.10


- Строка «Order deny,allow» определяет, в какой последовательности выполняются запрещающие (deny) и разрешающие (allow) условия.
- Строка «Deny from all» («запретить всем») полностью блокирует доступ к папке независимо от IP-адреса посетителя.
- Строка Allow from 62.148.3.4 — разрешает подключение с одного единственного IP-адреса.
- Строка Allow from 62.148.10 - открывает доступ для всех клиентов с адресами, начинающимися с 62.148.10.

Для того чтобы уведомить посетителя, что доступ запрещен, необходимо переобозначить страницы с сообщением об ошибке 403 (доступ запрещен): создай новою страницу с пояснением о закрытии доступа и сохрани ее в данном каталоге под именем warning.html (имя может быть любым...). Далее открой уже имеющийся файл .htaccess и добавь туда следующую строчку: ErrorDocument 403 /warning.htm.
Необходимость в создании дополнительной страницы warning.html отпадает, если вместо этой строки ввести следующее: ErrorDocument 403 «Доступ запрещен! Вы забанены по IP-адресу».

Иллюстрация. С помощью вот такого крохотного файлика я полностью блокирую доступ к форуму на время его обновления...


Order Deny,Allow
Deny from all
Allow from ? ? ?.? ? ?.? ? ?.? ? ?


Естественно, вместо вопросительных знаков надо подставить собственный IP... Можно и надпись сделать, как описано выше...

Приведу пример моего основного .htaccess (держу его в корневой директории форума):


DirectoryIndex index.php
Options -Indexes

<Files Settings.php>
order allow,deny
deny from all
</Files>

<Files Settings_bak.php>
order allow,deny
deny from all
</Files>

<Files upgrade_1-0.sql>
order allow,deny
deny from all
</Files>

<Files upgrade_1-1.sql>
order allow,deny
deny from all
</Files>

redirect /_vti_bin http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

ErrorDocument 403 http://www.?????.ru
ErrorDocument 404 http://www.?????.ru
ErrorDocument 500 http://www.?????.ru

order Allow,Deny
Deny from 74.6
Allow from All


Итак, по-порядку:

1) DirectoryIndex index.php - при простом обращении к директории форума будет автоматом запускаться index.php, то бишь форум...

2) Options -Indexes - запрет на отображение содержимого директории.

3) <Files Settings.php>
order allow,deny
deny from all
</Files> - и подобные блоки - запрет на просмотр конкретного файла для всех...

4) redirect /_vti_bin http://www.microsoft.com
...
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1

Перенаправление посетителя при запросе определенных страниц... Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft :)

5) ErrorDocument 403 http://www.?????.ru
ErrorDocument 404 http://www.?????.ru
ErrorDocument 500 http://www.?????.ru

Установка альтернативных страниц ошибок...
403 — пользователь не прошел аутентификацию, запрет на доступ (Forbided)
404 — запрашиваемый документ (файл, директория) не найден (Not Found)
500 — внутренняя ошибка сервера — ошибка скрипта или ошибка в синтаксисе файла .htaccess - (Internal Server Error)
В результате пользователь попадает на мой основной сайт... Естественно, вместо "?" надо подставить нужный ресурс...

6) order Allow,Deny
Deny from 74.6
Allow from All

А вот с этим пришлось повозиться... Таким образом задаётся запрет на доступ сетевых пауков, т.е. запись 74.6 означает, что доступ для всех адресов, начинающихся с этих цифр будет запрещён...
Благодаря такому нехитрому способу можно значительно разгрузить сервер! Присмотритесь к "гостям", среди них есть много подобных пауков... Ну нафига мне на форуме (русскоязычном!) американские пауки!

Надеюсь и другие поделятся собственными находками в этом славном ;) .htaccess...

Concorde

Плюсом ещё если ввести в браузере например: http://forum.com/SSI.php?ssi_layers , то можно увидеть директорию форума, я ещё добавил

<Files SSI.php>
order allow,deny
deny from all
</Files>
Всё конечно-же ИМХО

Mavn

увидишь только если админ, для всех остальных путь не будет отображаться!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

DJ-X

#3
Интересно, а можно как то настроить что бы для всех IP это ограничение работало, а для моего IP не работало? :facepalm:
LimitRequestBody 305

Лимит POST запроса 1 bytes для файла.

<Files index.php>
LimitRequestBody 1
</Files>

Jhonni

Спасибо большое за тему! Очень ценный инструмент для борьбы и защиты форума.

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

(Поиском пробовал искать подобную тему, но внятных ответов и примеров не нашел).

Капчу от Одалиски поставить не смог, так как ругается на что то....
Приходится менять чаще контрольные вопросы, для регистрирующихся.

Заранее всем спасибо.


Reden ist Silber, Schweigen ist Gold.

Ищу профессиональную няню для форума, писать в личку.

Сапожник

Предистория:
Один умник в рассылке ошибся и вместо http... написал https...
В результате половина пользователей, большинство из которых просто моральные уроды бабушки-одуванчики кричат что сайт не работает и у них не получается зайти.

Можно ли сделать "переадресацию" в htaccess?
Сейчас он выглядит так:
RewriteEngine On
AddDefaultCharset UTF-8
RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.com/ [R=301,L]
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/