/ Wordpress / .htaccess

.htaccess

HIT

04.08.2015

2712

.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>

Ошибки

Если на сайте возникает такая ошибка

Allowed memory size of 67108864 bytes exhausted

то одним из вариантов решения может добавка в файл .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/

Лично у меня, этот редирект (с русского на английский) не работал, домен при этом был кириллический. Причем прописывал по разному: в обычном виде сайт.рф и в кодировке punycode. В итоге прописал напрямую в htaccess — все работает!

Полный редирект с одного домена на другой

Например в случае изменения домена, нам нужно чтобы все предыдущие пути переключались на новый домен. Нужно в папке старого домена в файле .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/
Возможно из-за этого в админку придется входить по адресу /wp-admin/index.php

Перезаписывание файла 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. Чтобы правила работали для статики, нужно написать запрос хостеру об изменении соответствующих настроек. Однако это может увеличить нагрузку на аккаунте

Поделиться в соц. сетях:

  • Комментарии
  • Вложения

Добавить комментарий

Пока нет комментариев. Будь первым!

.htaccess
Взаимодействие форм и scripts
Рекомендации для васВзаимодействие форм и scriptsOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.