Заметки полного :-)

Файл .htaccess: редирект, доступ, кодировка, ошибки

Информация, приведенная ниже, скопирована с огромного количества разных сайтов для личного использования. 80% информации проверено, работает.

Как создать файл .htaccess

Очень просто. Открываем блокнот - “Сохранить как..” - в открывшемся окошке выбрать “Тип файла: все файлы” а имя: .htaccess

С помощью этого файла производится настройка Apache сервера. Файл имеет воистину почти неограниченные возможности.

Вот лишь некоторые из них:


Редирект через .htaccess

Если нужно перенаправление с любого url сайта, то пишем:

Redirect / http://www.example.com

где

# http://www.example.com - URL На который мы перенаправляем запросы

Редирект с отдельных страниц сайта прописавают так:


Redirect /linux http://www.linux.org


Redirect /linux/download.html http://www.linux.org/dist/download_info.html


Redirect 301 /kernel http://www.linux.org


302 редирект (временно)

временно отправляем посетителей на нужную страницу (например, “Извините, сайт в разработке”).
RewriteEngine on


RewriteCond %{REQUEST_URI} !/informpage.html$


RewriteCond %{REMOTE_HOST} !^12\.345\.678\.90


RewriteRule $ http://yoursitename.ru/informpage.html [R=302,L]
Страницы ошибок .htaccess 404

Обработка кодов ответов Web-сервера Apache

ErrorDocument 401 /401.html


ErrorDocument 403 /403.html


ErrorDocument 404 /404.html


ErrorDocument 500 /500.html

И выдача своей страницы пользователю
Индексные страницы .htaccess index

Код такой:

DirectoryIndex index.php index.shtml index.html
Сначала ищет 1ю указанную страницу, затем вторую и т.д.
ОДНА ИНДЕКСНАЯ СТРАНИЦА ВМЕСТО ЧЕТЫРЕХ
или склеить урл сайта .htaccess

http://www.site.ru

http://site.ru

http://www.site.ru/index.html

http://site.ru/index.html
Прописать в файле .htaccess:
Options +FollowSymLinks


RewriteEngine on


RewriteCond %{HTTP_HOST} ^site.ru


RewriteRule (.*) http://www.site.ru/$1 [R=301,L]


RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/


RewriteRule ^index\.html$ http://www.site.ru/ [R=301,L]
Запрет на отображение содержимого каталога

при отсутствии индексного файла

Options –Indexes
Выполнять код PHP в файлах HTML, XML, ASP

RemoveHandler .html .htm


AddType application/x-httpd-php .php .htm .html .phtml

Или

AddHandler application/x-httpd-php .html

А также XML- или ASP-файлы, которые будут вести себя как PHP-файлы:

AddHandler application/x-httpd-php .xml


AddHandler application/x-httpd-php .asp

Первая строка удаляет обработчик файлов с расширениями html и htm, а вторая строка сообщает серверу о необходимости использовать для файлов с расширениями htm и html обработчик PHP
Настройка кодировки файлов на сервере через .htaccess

отправляется браузеру в заголовке Content-Type и переключает на указанную кодировку

AddDefaultCharset Windows-1251
Задание кодировки загружаемых файлов

CharsetSourceEnc windows-1251
Отключение директивы MultiViews

Включённая на хостинге опция MultiViews может вызвать неожиданные проблемы, например, отображение несуществующих страниц сайта. Допустим, на сайте существует страница с адресом http://www.ваш сайт.ru/down.php, и если посетители обратятся к несуществующему каталогу http://www.ваш сайт.ru/down/, то включённая опция MultiViews вместо этого каталога подставит файл down.php. Однако подстановка будет выполнена не полностью - пути к изображениям, таблицам стилей и т.п. будут подставлены неверно. То есть страница будет отображена с искажениями. Для подавления такого поведения Apache опцию MultiViews следует отключить.

Options -MultiViews
Глобальное перенаправление на новый адрес

Redirect / http://www.ваш сайт.ru/
Перенаправление при обращении к определённому файлу

Redirect /books/index.php http://www.ваш сайт.ru/newbooks/
Перенаправление при обращении к любым страницам каталога

RedirectMatch /books/.* http://www.ваш сайт.ru/newbooks/
Перенаправление при обращении к любым страницам сайта

RedirectMatch /.* http://www.ваш сайт.ru/
ЗАПРЕТ ИНДЕКСАЦИИ ПОИСКОВИКАМИ ФАЙЛОВ .TXT

RewriteCond %{HTTP_USER_AGENT} ^ia_archiver$ [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*yandex*$ [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*google*$ [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*Rambler.* [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*Aport.* [NC,OR]

RewriteCond %{HTTP_USER_AGENT} ^.*crawler*$ [NC]

RewriteRule ^(.*).txt$ - [F,L]
Запрет просмотра каталога с помощью файла .htaccess

Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:

Options -Indexes

И наоборот, вы можете разрешить просмотр каталога, встроив его в стандартный интерфейс сайта директивой

Options +Indexes
Защита от хотлинков

RewriteEngine On


RewriteCond %{HTTP_REFERER} !^$

#домены, которые могут ссылаться на картинки с вашего сайта

RewriteCond %{HTTP_REFERER} !^http://([ -a-z0-9] \.)?yoursitename\.ru [NC]

#не показывать картинки при хотлинках

RewriteRule \.(gif|jpe?g|png)$ - [F,NC,L]

Если хотите, чтобы на чужом сайте вместо 403 ошибки появлялась определенная картинка, последнюю строку следует заменить на:

RewriteRule \.(jpg|png|gif)$ http://yoursitename.ru/images/imagename.jpg 

[NC,R,L]
Принудительно сохранение файла вместо открытия

Если хотите, чтобы посетители вместо просматра файла онлайн сохраняли его, то в .htaccess пишем:

AddType application/octet-stream .doc .mov .avi .pdf .xls .mp4

Кэширование файлов

#кэширование html и htm на сутки

<FilesMatch “.(html|htm)$”>
Header set Cache-Control “max-age=43200″
</FilesMatch>

#кэширование css, javascript и txt-файлов на неделю

<FilesMatch “.(js|css|txt)$”>
Header set Cache-Control “max-age=604800″
</FilesMatch>

#кэширование flash и картинок на месяц

<FilesMatch “.(flv|swf|ico|gif|jpg|jpeg|png)$”>
Header set Cache-Control “max-age=2592000″
</FilesMatch>

#запрет на кэширование скриптов

<FilesMatch “\.(pl|php|cgi|spl|scgi|fcgi)$”>
Header unset Cache-Control
</FilesMatch>

Параметр max-age приведен в секундах.
Запрет на доступ к файлу .htaccess

Например, это может быть ваш .htaccess

<Files .htaccess>
order allow,deny
deny from all
</Files>


Защита от сканирования роботами поисковиков

(источник: http://www.realcoding.net/articles/fail-htaccess-na-sluzhbe-u-seo-optimizatora.html)

Синтаксис:

RewriteEngine – ключ к запуску модуля.
RewriteBase указывает “глобальность” наших изменений (если используется знак «/», значит, настройки будут применены к текущей директории).

Директива RewriteCond ставит условие, при истинности которого будет исполняться наша настройка. В состав этой директивы входит проверочная строка. В данном случае используем переменную сервера %{HTTP_USER_AGENT}, которая выводит юзер-агенты программ, обращающихся к серверу. Далее идёт значение этой переменной, разделённое регулярным выражением ^ начала строки.
RewriteRule выполняет нашу настройку. В данном случае мы запрещаем доступ к серверу. Делается это при помощи регулярных выражений начала строки ^ и конца строки $, а также флага вида действия - [F] (его значение в данном случае FORBIDDEN).

[OR] используется в случае, если у нас несколько условий обработки действий роботов.

Код:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Googlebot
RewriteRule ^.*$ - [F]

В данном случае робот с юзер-агентом Googlebot (сканирующий робот поисковой системы Google) не сможет получить доступ к сайту. На месте Googlebot можно написать любой юзер-агент программы или робота, которого вы не хотите видеть у себя. Здесь же можно указать и юзер-агенты известных программ-сборщиков спама типа EmailSiphon или ExtractorPro.
запретить доступ сразу нескольким роботам

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^ Googlebot [OR]
RewriteCond %{HTTP_USER_AGENT} ^ Yandex
RewriteRule ^.*$ - [F]
ПОДЕЛИСЬ:

0 коммент.:

Отправить комментарий

Все сообщения проверяются! Спамеры идите в лоток блинами торговать! Адекватные люди приветствуются.

ADSNS

Архив блога