Иногда, при создании/редактировании .htaccess’a возникает необходимость изменить/добавить какое-либо правило. Но, не всегда помнишь точный синтаксис. И для того, чтобы не спрашивать каждый раз гугл, я собрал небольшую подборку чрезвычайно полезных и часто используемых правил и решений.
Убрать www из урла
Для удобства или для SEO, вы можете захотеть убрать (или использовать) www в адресе вашего сайта. Приведенный код убирает www из урла сайта и перенаправляет на адрес вида http://mysite.ru.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^mysite.ru$ [NC]
RewriteRule ^(.*)$ http://mysite.ru/$1 [L,R=301]
Автоматически устанавливать файлам кодировку utf-8
Один из вариантов избежать проблем с кодировкой – это создать .htaccess с таким содержанием:
<FilesMatch "\.(htm|html|css|js)$"> AddDefaultCharset UTF-8 </FilesMatch>
Убрать расширение файла
Расширения файлов могут быть полезны для разработчиков, но они абсолютно не нужны обычным посетителям вашего сайта. Приведенный ниже код удаляет .html расширение у всех html-файлов.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
# Вместь html может быть любое другое расширение: php, htm, asp
Запись php ошибок в лог-файл
Интересный способ записи ошибок выполнения скрипта. Просто создайте файл php_error.log у вас на сервере и укажите до него путь в последней строке кода.
php_flag display_startup_errors off php_flag display_errors off php_flag html_errors off # log to file php_flag log_errors on php_value error_log /location/to/php_error.log
Перенаправление со старого домена на новый
Перенаправляем посетителей со своего старого сайта на новый, используя 301 редирект.
RewriteEngine On RewriteRule ^(.*)$ http://www.newsite.ru/$1 [R=301,L]
Изменяем некоторые системные значения
Данный трюк может срабатывать не всегда.
#Увеличиваем максимальный размер загружаемого файла php_value upload_max_filesize 100M #Увеличиваем максимальный размер файла передаваемого пост-запросом php_value post_max_size 100M #Увеличиваем время выполнения скрипта php_value max_execution_time 700
Удалить подраздел/категорию из урла
Для того, чтобы изменить урл вида: http://site.ru/category/seo на http://site.ru/seo, дописываем в .htaccess следующий код.
RewriteRule ^category/(.+)$ http://www.yourdomain.com/$1 [R=301,L]
Свои страницы с ошибками (404, 403, 500, etc.)
Не нравятся дефолтные страницы с ошибками? Просто создайте для каждой ошибки свой html-файл и пропишите в .htaccess следующий код.
ErrorDocument 400 /errors/badrequest.html ErrorDocument 401 /errors/authrequest.html ErrorDocument 403 /errors/forbidden.html ErrorDocument 404 /errors/notfound.html ErrorDocument 500 /errors/servererror.html
Запрет выполнения php-скриптов
Данный код может быть очень быть полезен там, где вы храните файлы или картинки. Только, нужно запретить перезаписывать .htaccess.
php_flag engine off
Защита от хотлинкинга
Хотлинк — это включение в веб-страницу файлов-изображений или других ресурсов с чужого сервера. Для избежания этого злостного деяния используем следующий код.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.ru/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]
- None Found
Теги: .htaccess

Хорошо бы еще перенаправление с без WWW на c WWW добавить : )
Reply
Max Reply:
Август 28, 2011 at 20:42
Надо изменить RewriteRule ^(.*)$ http://mysite.ru/$1 [L,R=301] на RewriteRule ^(.*)$ http://www.mysite.ru/$1 [L,R=301]
Reply
Полезно, спасибо!
Reply
У меня на сайте вирус-скрипт постоянно переписывает файл .htaccess( хотя закрыт от записи) добавляя код перенаправления на другие сайты , как можно вычислить, где он засел этот скрипт?
Reply
Max Reply:
Ноябрь 9, 2011 at 18:04
Сложно сказать, смотрите прежде всего файлы, которые подключаются на каждой странице. Конфиги и файлы шаблонов.
Reply