/ Wordpress / .htaccess

.htaccess

HIT

04.08.2015

1492

.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
Быстрый просмотр товара без плагина
Рекомендации для васБыстрый просмотр товара без плагинаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.