Переадресация с помощью файла .htaccess

.htaccess (с точкой в начале имени) — это файл-конфигуратор Apache-серверов, который дает возможность конфигурировать работу сервера в отдельных директориях (папках), не предоставляя доступа к главному конфигурационному файлу. Например, устанавливать права доступа к файлам в директории, менять названия индексных файлов, самостоятельно обрабатывать ошибки Apache, перенаправляя посетителей на специальные страницы ошибок. .htaccess представляет собой обычный текстовый документ, расширение которого htaccess. Данный файл обычно находится в корне сайта, однако Вы можете создавать и дополнительные .htaccess-файлы для различных директорий Вашего сайта.

Mod_rewrite — модуль, используемый веб-серверами для преобразования URL’ов.

Директивы модуля Mod_rewrite

Варианты реализации Редиректа с помощью файла .htaccess

Запрещение доступа в конкретную директорию

Определение кодировки

Определение кодировки, в которой сервер «отдает» файлы

AddDefaultCharset windows-1251

варианты: KOI8-R, UTF-8, Windows-1251

Определение кодировки на загружаемые файлы

CharsetSourceEnc windows-1251

Установка пароля на директорию с помощью .htaccess

Для установки пароля на директорию можно воспользоваться системой базовой авторизации, предусмотренной в веб-сервере Apache. Создаем в каталоге, к которому хотим ограничить доступ по паролю, файл .htaccess с такими директивами:

AuthType Basic AuthName «Some Name» AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd require valid-user

Путь /www/some_login/www/htdocs/some_dir/.htpasswd обозначает полный путь к файлу паролей на диске нашего сервера. Если, например, вы поместите файл .htpasswd (в нем будут пароли) в домашний каталог, куда вы попадаете, зайдя на сервер по FTP, то путь к этому файлу будет иметь вид /www/some_login/www/htdocs/some_dir/.htpasswd, где some_login — Ваш логин. В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями, который мы создадим чуть позже. Если вы создаете файл .htaccess на своем компьютере, а не сразу на сервере используя текстовый редактор, обратите особое внимание на то, что .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме.

Создаем файл паролей. Файл с паролями должен содержать строки вида login:password. Пароль должен быть зашифрован с использованием алгоритма MD5. Один из способов создать такой файл — воспользоваться программой, входящей в поставку Apache — htpasswd (на нашем сервере она находится в каталоге /usr/local/apache/bin, полный путь — /usr/local/apache/bin/htpasswd).

Рассмотрим, как создать файл паролей в unix shell прямо на сервере. Зайдем в shell и будем выполнять следующие команды:

htpasswd -mbc .htpasswd user1 7B1safkir

— создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке.

htpasswd .htpasswd user2

— добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы.

После окончания заведения всех логинов файл нужно загрузить на сервер. О других способах установки паролей на страницу

Задаем собственные страницы ошибок

Задать собственную страницу ошибок можно следующим образом:

ErrorDocument 404 http://www.site.ru/404.php

IE игнорирует страницы размером меньше 512 байт.

Индексация директорий и поддиректорий

Чтобы избежать индексации поисковыми системами директорий и поддиректорий, необходимо прописать такую строку, к примеру:

DirectoryIndex index.php

Эта директива задает файл, который будет вызван при обращении к директории без указания имени файла.

Можно указать несколько индексных страниц. При запросе каталога они будут искаться в том порядке, в котором перечислены в директиве DirectoryIndex. Если не будет найден файл index.html, то будет произведен поиск файла index.php и т.д.

DirectoryIndex index.html index.php index.shtml

Лично я предпочитаю переадресовывать с пустых директорий либо на главную страницу сайта, либо на какую-либо другую подходящую страницу. Например, директорию www.site.ru/pic/ можно переадресовать на www.site.ru.

Защита изображений от скачивания

Очень часто бывает, что веб-мастера нагло копируют контент с Вашего сайта вместе с рисунками, причем рисунки подгружаются с Вашего же сервера. Это создает лишний трафик, что, зачастую, приводит к ряду проблем. Как же защититься от таких веб-мастеров и не помешать поисковым роботам индексировать изображения? Все просто:

RewriteEngine on RewriteCond %{HTTP_REFERER} . RewriteCond %{HTTP_REFERER} !^http://([^.]+.)?site. [NC] RewriteCond %{HTTP_REFERER} !google. [NC] RewriteCond %{HTTP_REFERER} !search?q=cache [NC] RewriteCond %{HTTP_REFERER} !msn. [NC] RewriteCond %{HTTP_REFERER} !yahoo. [NC] RewriteCond %{REQUEST_URI} !^/hotlinker.gif$ RewriteRule .(gif|jpg|png)$ /hotlinker.gif [NC,L]

hotlinker.gif — изображение, которое будет отображаться, вместо истинных изображений. Рекомендую в этом изображении отобразить Ваш логотип и ссылку на Ваш сайт.

Еще один варинат запрета доступа к картинкам с неразрешенных сайтов:

SetEnvIfNoCase Referer «^$» local_ref=1 SetEnvIfNoCase Referer «^http://(www.)?htmlweb.ru» local_ref=1 SetEnvIfNoCase Referer «^http://(www.)?images.yandex.ru» local_ref=1 SetEnvIfNoCase Referer «^http://(www.)?hghltd.yandex.com» local_ref=1 <FilesMatch «.(jpg|gif|png)»> Order Allow,Deny Allow from env=local_ref </FilesMatch>

Поисковые машини и разного рода сканеры создают коллосальный трафик на вашем сайте. Нижеприведенный блок кода позволит запретить доступ ботам на сайт.

RewriteCond %{HTTP_USER_AGENT} (Googlebot|Slurp|spider|Twiceler|heritrix| Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer| MJ12bot|ZyBorg/1|Ask Jeeves|AskJeeves|ActiveTouristBot| JemmaTheTourist| agadine3|BecomeBot|Clustered-Search-Bot| MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client| MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner| Asterias Crawler|T-H-U-N-D-E-R-S-T-O-N-E|GeorgeTheTouristBot| VoilaBot|Vagabondo|fantomBro wser|stealthBrowser|cloakBrowser| fantomCrew Browser|Girafabot|Indy Library|Intelliseek|Zealbot| Windows 95|^Mozilla/4.05 [en]$|^Mozilla/4.0$) [NC] RewriteRule ^(.*)$ — [F] # RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Opera.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Firefox.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Netscape.* [NC] RewriteRule ^(.*)$ — [L] RewriteRule ^(.*)$ — [F]

Отслеживание обращений к файлу robots.txt

Чтобы иметь больше информации о посещении поисковиков, полезно иметь подробную информацио об обращении к файлу robots.txt Для того, чтобы оганизовать это, в ‘.htaccess’ должны быть следующие записи:

RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^robots.txt$ /robot.php?%{REQUEST_URI}

Теперь при запросе файла ‘robots.txt’ наш RewriteRule переадресует посетителя (робота) к обрабатывающему запросы скрипту robot.php. Кроме того, переменная передается скрипту, которая будет обработана в соответствии с вашими нуждами. ‘REQUEST_URI’ определяет имя запрашиваемого файла. В данном примере это — ‘robots.txt’. Скрипт прочтет содержание ‘robots.txt’ и отправит его web-браузеру или роботу поискового сервера. Таким образом, мы можем считать хиты посетителей и вести лог-файлы.

PHPSESSID

Для отключения добавления PHPSESSID к URL вставьте в начало index.php:

ini_set(«session.use_trans_sid», 0);

 

Либо в .htaccess пропишите:

php_flag session.use_trans_sid Off

Директивы кеширования

Кэширование для всех типов файлов по времени доступа

ExpiresActive on ExpiresDefault «access plus 600 seconds»

Кэширование для всех типов файлов по времени изменения

ExpiresActive on ExpiresDefault «modification plus 600 seconds»

Кэширование для определённых типов файлов

ExpiresByType text/css «modification plus 600 seconds» ExpiresByType image/jpeg «modification plus 600 seconds» ExpiresByType image/gif «modification plus 600 seconds» ExpiresByType image/x-ico «modification plus 600 seconds» ExpiresByType image/png «modification plus 600 seconds»

Запрет кеширования с помощью сервера Apache

Откройте файл конфигурации сервера Apache httpd.conf и раскомментируйте следующие строчки:

LoadModule expires_module modules/mod_expires.so LoadModule headers_module modules/mod_headers.so … AddModule mod_expires.c AddModule mod_headers.c

Впишите в .htaccess следующее:

# Запрещение кеширования в этой папке # Необходимо включение модулей # mod_headers.c и mod_expires.c # # Заголовок Cache-Control &lt;IfModule mod_headers.c&gt; Header append Cache-Control «no-store, no-cache, must-revalidate» &lt;/IfModule&gt; # Заголовок Expires &lt;IfModule mod_expires.c&gt; ExpiresActive On ExpiresDefault «now» &lt;/IfModule&gt;

Необходимые заголовки будут передаваться автоматически, и специально их писать в PHP уже не нужно — кэш уже выключен!

Описание http-заголовка кеширования Cache-control

Кеширование с помощью файла .htaccess

# Разрешение кеширования в этой папке # Необходимо включение модулей # mod_headers.c и mod_expires.c # # Заголовок Cache-Control &lt;IfModule mod_headers.c&gt; Header append Cache-Control «public» &lt;/IfModule&gt; # Заголовок Expires &lt;IfModule mod_expires.c&gt; ExpiresActive On ExpiresDefault «access plus 1 hours» #ExpiresDefault «access plus 10 years» &lt;/IfModule&gt;

Кеширование javascript файлов с помощью файла .htaccess

&lt;FilesMatch .*.js$&gt; ExpiresDefault «access plus 3 days» &lt;/FilesMatch&gt;

Будьте осторожны при кешировании, т.к. при изменении файла, пользователь может получить новый вариант только через 3 дня!

Как заставить html-страницы обрабатывать php-код?

Пропишите в своем файле .htaccess следующие строки:

RemoveHandler .php .htm .html AddHandler application/x-httpd-php .php .htm .html

Как разместить несколько сайтов на одном виртуальном хостинге?

Чтобы разместить два или более сайтов на одном виртуальном хостинге, вопреки отведенному вам тарифным планом количеству доменов необходимо в файле «.htaccess» прописать следующие строки:

RewriteEngine On RewriteRule ^newdirectory/ — [L] RewriteCond %{HTTP_HOST} (www.)?newdomain.ru [NC] RewriteRule (.*) newdirectory/$1 [L]

Где:
newdirectory/ — папка, в которой будет лежать второй сайт
newdomain.ru — домен, для которого мы делаем перенаправление

Обратите внимание, что при этом у Вас будет единый почтовый аккаунт. Т.е. если, у Вас существует ящик Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , то после подключения домена newdomain.ru у ящика Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript появляется второе имя — Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript . А при создании любого нового ящика (например info), ему автоматически присваиваются два имени — Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript и Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript .

Поиск страниц больше чем в одном каталоге

Иногда необходимо позволить веб-серверу искать страницы больше чем в одном каталоге.

RewriteEngine on # во-первых попытаемся найти это в указанном месте/… # …и если нашли то заканчиваем поиск: RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f RewriteRule ^(.+) /your/docroot/dir1/$1 [L] # во-вторых — попытаемся найти это в pub/… # …и если нашли то заканчиваем поиск: RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f RewriteRule ^(.+) /your/docroot/dir2/$1 [L] # иначе продолжаем для других директив RewriteRule ^(.+) — [PT]

 

Виртуальные хосты пользователей

Если Вы хотите предоставлять адреса www.subdomain.domain.ru для страниц пользователей, Вы можете использовать следующий набор правил для преобразования http://www.subdomain.domain.ru/path во внутренний путь /home/subdomain/path:

RewriteEngine on RewriteCond %{HTTP_HOST} ^www.[^.]+.ru$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^www.([^.]+).ru(.*) /home/$1$2

 

Повреждаются файлы при загрузке на сервер

Если при передаче файлов через формы (при указанном enctype=»multipart/form-data») бинарные данные повреждаются, пропишите в /cgi-bin/.htaccess директиву:

CharsetRecodeMultipartForms Off.

 

Ошибка загрузки SWF файлов.
Ошибки при обращении к страницам, содержащим ключевые слова,
типа $_REQUEST

Такое может происходить из-за установленного модуля <mod_security> в Apache. По умолчанию он блокирует в запросах строки с SQL аргументами и другими потенциально опасными командами.

Возможные сообщения об ошибке:

Forbidden

You don’t have permission to access /adm/index.php on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

или

Запрос небезопасен и был отвергнут.

Добавьте в .htaccess &lt;IfModule mod_security.c&gt; SecFilterEngine Off SecFilterScanPOST Off &lt;/IfModule&gt; Для сообщения:

«POST /wp-admin/async-upload.php HTTP/1.1» 406 354 «-» «Shockwave Flash»

можно снять защиту только на загрузку файлов на сервер: &lt;IfModule mod_security.c&gt; &lt;Files async-upload.php&gt; SecFilterEngine Off SecFilterScanPOST Off &lt;/Files&gt; &lt;/IfModule&gt;

Оптимально снимать защиту только с той папки, в которой это необходимо, не убирая защиту со всего сайта.

Источник: lred.ru

Оцените статью
новости для мужчин