.htaccess — файл дополнительной конфигурации для веб-сервера Apache. Это файл без названия, имеющий расширение .htaccess. Написание расширения происходит от английских слов hypertext (гипертекст) и access (доступ). Файлов .htaccess на сервере может быть несколько.
Стандартный вид .htaccess для WordPress
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Ограничение доступа в админку по IP
Прописываем IP с которых разрешен доступ в админку
<Files wp-login.php>
order deny,allow
deny from all
allow from 185.3.33.192
allow from 178.76.246.20
allow from 188.168.59.245
allow from 185.49.240.26
</files>
Ошибки
Если на сайте возникает такая ошибка
то одним из вариантов решения может добавка в файл .htaccess в между тэгами <IfModule mod_rewrite.c></IfModule>
php_value memory_limit 64M
Перенапрвление с одной страницы на другую (редирект)
Redirect 301 /index.php http://new.avtokofeinya.ru/
Редиректы можно делать с помощью плагина Redirection (800 000). Преимуществами плагина является: статистика по срабатыванию редиректов, разбивка редиректов на группы, использование регулярных выражений.
Синтаксис при прописывании редиректа должен быть тот же самый, что и в htaccess. Например переадрессация с русскоязычного написания на латиницу:
Redirect 301 /номера http://site.ru/nomera/
будет прописан так:
в верхней строке /номера
в нижней строке http://site.ru/nomera/
Полный редирект с одного домена на другой
Например в случае изменения домена, нам нужно чтобы все предыдущие пути переключались на новый домен. Нужно в папке старого домена в файле .htaccess прописать следующее:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^oldsite.ru [NC]
RewriteRule ^(.*) https://newsite.ru/$1 [L,R=301]
Альтернативный, 100% рабочий код:
RewriteEngine On
RewriteCond %{HTTP_HOST} siteold\.ru$ [NC]
RewriteRule (.*) https://sitenew.ru/$1 [R=301,L]
Редирект с .html
Если по каким то причинам на сайте были url с .html на конце и нужно от них автоматически установить 301-редирект. Не работающие (у меня) варианты:
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
RewriteRule (.+)\.html?$ http://example.com/$1/ [R=301,L]
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/?(.*).(html)$ /$1 [R=301,L]
</IfModule>
RedirectMatch 301 ^/([^/]+).html$ http://example.com/$1 8
Рабочий вариант:
RedirectMatch 301 ^/([^/]+)/([^/.]+).html$ /$1/$2/
RedirectMatch 301 ^/([^/]+)/([^/]+)/([^/.]+).html$ /$1/$2/$3/
Перезаписывание файла htaccess
Файл htaccess самостоятельно перезаписывается и некоторые добавленные записи удаляются из него. Изменения в .htaccess перезатираются при сохранении настроек постоянных ссылок и некоторых плагинов из админки WordPress!
Решение: в файле .htaccess есть область обрамленная строками # BEGIN WordPress и # END WordPress. Все что внутри этой области WordPress перезаписывает. Поэтому пользовательские свои записи нужно вносить после данной области.
Полезная информация по данной тематике
Включить PHP отладчик
Чтобы сервер, в случае 500-ошибки, отображал саму ошибку а не просто экран 500, необходимо в .htaccess включить (на самой первой строке):
php_flag display_errors On
Защитить файлы по прямой ссылке
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://site.ru/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F]
или
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?site.ru [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Работает только если сервер Apache. Также бывает что на хостинге статический контент отдаётся веб-сервером Nginx, который его обрабатывает гораздо быстрее, чем Apache. Чтобы правила работали для статики, нужно написать запрос хостеру об изменении соответствующих настроек. Однако это может увеличить нагрузку на аккаунте
[site-socialshare]