ModRewrite
Поддомен открывается с ошибкой Internal Server Error (частный случай) Для поддомена наследуются настройки .htaccess домена. Если в настройках .htaccess домена используются правила mod_rewrite, они могут приводить к некорректной работе поддомена. Добавьте в начало файла .htaccess поддомена следующую директиву:
RewriteEngine off
Это правило отключит mod_rewrite для вложенной директории поддомена.
Установка индексного файла
При открытии директории без указания конкретного файла веб-сервер ищет индексные файлы index.html, index.php в порядке приоритета для отображения. Если индексные файлы отсутствуют, сервер возвращает ошибку 403 Forbidden, так как отображение списка файлов (листинг директорий) по умолчанию запрещено.
Чтобы установить в качестве индексного файла произвольный файл, следует добавить инструкцию:
DirectoryIndex имя_файла
Например, следующая инструкция предписывает веб-серверу при обращении к сайту открывать не страницу, а изображение example.jpg в папке pics сайта:
DirectoryIndex /pics/example.jpg
Запретить доступ по IP-адресу
Простая директива, в которой указываются списки IP-адресов доступа и запрет для остальных, выглядит так:
order deny,allow
deny from all
allow from X.X.X.X
Вместо X.X.X.X укажите ваш IP-адрес (проверить его можно, например, здесь). Обращения с других IP-адресов завершатся ошибкой 403 Forbidden.
Запретить доступ по User-Agent
Этот метод обычно требуется в случае, если доступ к сайту нужно запретить для роботов или программ, имеющих динамические IP-адреса. Подробно о User-Agent мы рассказали в статье нашего блога. Для блокировки достаточно в начало файла .htaccess добавить директивы:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} example1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} example2 [NC]
RewriteRule ^.*$ - [F]
Вместо example1 и example2 укажите User-agent роботов или программ, доступ для которых требуется запретить.
Направить на страницу о технических работах
Также можно перенаправлять посетителей на собственноручно созданную страницу с сообщением о проводимых технических работах. С указанного в условии (RewriteCond) IP-адреса сайт будет отображаться по-прежнему:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^X.X.X.X$
RewriteCond %{REQUEST_URI} !^site-closed.html
RewriteRule ^.*$ site-closed.html
Страницу ошибки site-closed.html необходимо поместить в корневом каталоге сайта или указать в директиве путь к ней.
У меня заработал ткой вариант:
# Заглушка
RewriteCond %{REMOTE_ADDR} !^127.0.0.2$
RewriteCond %{REQUEST_URI} !^/stop
RewriteRule ^.*$ stop
RewriteCond %{REMOTE_ADDR} ^127.0.0.2$
<IfModule mod_headers.c>
Header append Cache-Control “no-store, no-cache, must-revalidate”
Header append Pragma “no-cache”
</IfModule>
Но Chrom, зараза, так кэшировал это перенаправление, что оно продолжало работать и после редактирования .htaccess. Только очистка кэша Хрома, позволяла восстановить нормальную работу.
Избавиться от дублей страниц из-за слеша
Поисковые системы при индексации сайта могут воспринимать ссылки со слешем (косая черта — /
) и без него как разные страницы. А еще бывает, что при обращении к таким ссылкам открывается разное содержимое (например, example.com/shop/ — работает, а example.com/shop — отдает код 404). Чтобы устранить эти дубли страниц, примените к сайту эти правила перенаправления 301.
Добавить слеш ко всем страницам сайта можно при помощи правила:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]
Это правило автоматически перенаправит поискового робота и посетителя, например, со страницы example.com/shop на example.com/shop/.
Чтобы наоборот убрать слеш в конце ссылок на страницы сайта, внесите в файл .htaccess следующие директивы:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
В эти правила можно добавить исключение для конкретной директории, чтобы на нее правило перенаправления не действовало — например, если это обусловлено особенностями CMS сайта:
RewriteCond %{REQUEST_URI} !admin/$
Добавьте эту строку в середину правила (под остальными RewriteCond) и измените имя директории из примера.
Включить SSI
Директивы SSI (Server Side Includes) по умолчанию обрабатываются в файлах с расширением .shtml (например, index.shtml). Чтобы SSI обрабатывались и в других файлах, необходимо в файле .htaccess указать типы этих файлов:
AddType text/html .html .ssi
AddOutputFilter INCLUDES .html .ssi
Вместо “.ssi .html” укажите расширения файлов, в которых должны обрабатываться директивы SSI. Использовать в одном и том же файле PHP и SSI одновременно не рекомендуется.
Выполнять скрипты CGI
Для выполнения скриптов CGI в какой-либо папке необходимо настроить веб-сервер соответствующим образом с помощью файла .htaccess. В папке, в которой должны выполняться скрипты CGI, создайте файл .htaccess вида:
Options +ExecCGI
AddHandler cgi-script .cgi .pl
Вместо “.cgi .pl” укажите список расширений, которые должны обрабатываться как скрипты. С помощью Файлового менеджера или FTP-клиента установите файлам скриптов права на выполнение (755).
Включить uWSGI (Python)
Проектам на языке Python необходим файл .htaccess с таким содержанием:
Options +ExecCGI
AddHandler wsgi-script .wsgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /site.wsgi/$1 [QSA,PT,L]