Как включаются закомментированные php-директивы в файле .htaccess?
Как включаются закомментированные php-директивы в файле .htaccess?
Для того, чтобы, увидеть ответ, необходимо приобрести одну из следующих подписок:
Купить подписку можно на главной странице сайта
О проекте
Мы публикуем ответы на тесты, необходимые для получения сертификатов по 1С — Битрикс. Данные сертификаты требуются для получения компетенции и партнерства.
Разделы
Ответы
- Контент — менеджер
- Администратор.Базовый
- Администратор.Модули
- Bitrix Framework
- Пользователь Сервиса Битрикс24
Что такое rewriterule
В сегодняшней статье рассмотрим работу модуля mod_rewrite сервера Apache, и как с помощью правил RewriteRule и RewriteCond работать с URL. Поговорим про описание и логику работы правила RewriteRule, а так же синтаксис некоторых директив модуля mod_rewrite.
Немного теории
Веб-сайты работают благодаря серверам — компьютерам с установленным программным обеспечением, отвечающим за передачу информации от физических хранилищ до браузера пользователя.
Apache — это программное кроссплатформенное обеспечение, основное назначение которого HTTP-сервер.
HTTP сервер или веб-сервер — это программа, которая понимает, что нужно клиенту и выдает ему ответы в виде HTML страниц, на которых может содержаться различная информация: изображения, тексты, скрипты, файлы, медиаданные (видео и аудио) и многое другое.
Apache является самым популярным ПО для веб-серверов в мире, благодаря простоте, гибкости в настройке, надежности, производительности и модульности.
.htaccess — конфигурационный файл Apache, в котором директивами (командами), задаются параметры для работы сервера: разрешение или запрет доступа к директориям, переназначение типов файлов, оптимизация скорости загрузки (можно задать кэш для файлов). Файл .htaccess располагается в корневой директории сервера и распространяется на весь сервер, кроме директорий, где находится другой файл.
Чтобы сервер мог работать с директивами, активируйте модуль mod_rewrite в конфигурационном файле (*.conf). Настройка этого модуля, происходит в файле .htaccess. Как это сделать будет описано ниже.
Команда подключения модулей (LoadModule) прописывается в конфигурационном файле Apache. В зависимости от системы может располагаться:
- Linux, CentOS, Fedora (Redhat-системы) — /etc/httpd/conf/httpd.conf;
- Apache 2.2 — /etc/apache2/apache2.conf;
- Gentoo, Apache 2.0 — /etc/apache2/httpd.conf.
Включить и отключить модуль Apache можно с помощью следующих команд:
a2enmod
a2dismod
Например, подключение модуля rewrite_module происходит с помощью консольной команды:
sudo a2enmod rewrite — включить модуль
sudo systemctl restart apache2 — перезагрузить Apache что бы применилась активация
Если используется Apache в Windows, то для включения mod_rewrite в файле httpd.conf (C:\Server\bin\Apache24\conf\httpd.conf) найдите и раскомментируйте строку:
LoadModule rewrite_module modules/mod_rewrite.so
Для этого уберите перед строкой знак “#”.
Также используйте знак решетки если не работает что-то из директив. Поставьте ее перед строкой с кодом. Это позволит закомментировать не нужный Вам текст программа при чтении пропустит данную строку.
Что такое mod_rewrite
Это модуль сервера Apache (программа, работающая на стороне сервера), выполняющий действия с URL, такие как: создание редиректов, ЧПУ, ограничения доступа к директориям на веб-сайте. Главная задача — преобразования URL-ов. Например, рассмотрим перенаправление всех страниц домена oldsite.com на соответствующие страницы newsite.com.
RewriteCond % ^oldsite\.com RewriteRule ^(.*)$ http: //newsite .com/$1 [R=301,L]
Как работает модуль
Схема работы модуля mod_rewrite
В своей работе mod_rewrite использует регулярные выражения. В них используются специальные символы (метасимволы) и обычные символы (литералы). Основными метасимволами являются: [ ] \ / ^ $ . | ? * + ( ) < >, где наиболее часто используемые спецсимволы:
^ — начало строки;
$ — конец строки;
. — любой символ;
* — любое количество любых символов;
? — один определенный символ;
[0-9] — последовательность символов, например, от 0 до 9;
| — символ «или», выбирается или одна группа, или другая;
() — используется для выбора групп символов.
Порядок обработки правил (команд) прописывается в .htaccess, и составляются примерно в таком порядке:
(проверяем что модуль включен) RewriteEngine on (один раз сверху) RewriteCond % с чем сравнивать [флаги] RewriteRule исходный url целевой url [флаги]
Если указано условие RewriteEngine off, то блок IfModule с кодом — будет проигнорирован и не выполнится.
- RewriteEngine включает или отключает преобразование http-ссылок;
- RewriteCond — условие, которое должно быть соблюдено перед выполнением правила, условий может быть несколько;
- RewriteRule — собственно само правило, которое выполняется при соблюдении условия.
Порядок размещения правил в .htaccess важен, потому что механизм преобразований обрабатывает их в специальном порядке. Условия (RewriteCond) всегда должны быть перед правилами (RewriteRule)!
Правило преобразования URL RewriteRule

Директива преобразования URL RewriteRule
Синтаксис директивы RewriteRule:
RewriteRule Шаблон Подстановка [Флаги]
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
- RewriteRule это директива;
- Шаблон — это символы ^(.*)$. Регулярное выражение применяемое к текущему URL. Читается так. Искать в строке URL от начала строки(^) до конца( $) любой символ (знак .) в количестве от нуля до бесконечности (знак *).
Например:
^stena — Любые строки, начинающиеся со слова stena. Строка, начинающаяся со слова dom-stena не удовлетворит критерию;
stena$ — Любые строки, заканчивающиеся набором символов stena. Строка, заканчивающаяся на stena-dom под выбор не попадёт;
[0-9]$ — Выбрать все строки, оканчивающиеся от 1 до 6 цифрами из диапазона от 0 до 9.
В регулярных выражениях есть скобки(). Поэтому часть URL соответствующая условию в скобках добавляется в переменную подстановки $1, которая используется в Подстановке или в Сравниваемая Строка (это в директиве RewriteCond, о ней ниже); - Подстановка — index.php?/$1. Правило преобразования URL. Запись означает, что строка нового, измененного URL должна быть составлена из двух частей, где первая часть строки постоянное значение index.php?/, а вторая часть — значение из переменной подстановки $1. В $1 храниться та часть URL которая соответствовала части регулярного выражения в скобках из параметра Шаблон. Мы получаем преобразованный URL вида index.php?/URL по которому обратились;
- [L,QSA] – флаги. Правило означающее, что необходимо остановить процесс преобразования на этом месте и не применять больше никаких следующих правил преобразований для URL. Дополняют преобразование URL Третий аргумент директивы RewriteRule.
Рассмотрим флаги RewriteRule подробнее:
- [NC]. Делает шаблон нечувствительным к регистру, когда он применяется к текущему URL;
- [QSA]. Добавляет строку запроса из исходного URL к строке запроса, созданной правилами перезаписи;
- [L]. Останавливает процесс преобразования на этом месте и не применяет больше никаких правил преобразований;
- [N]. Перезапускает процесс преобразований (начав с первого правила). В этом случае URL снова сопоставляется неким условиям, но не оригинальный URL, а URL вышедший из последнего правила преобразования;
- [F]. Веб-сервер возвращает браузеру ошибку с кодом 403;
- [R]. Редирект с кодом ответа браузеру 302 (временно перемещен);
- [R=code]. Редирект с кодом ответа браузеру code;
- [B] (escape backreferences) — заставляет экранировать (кодировать) спец-символы, например взять правило «RewriteRule ^search/(.*)$ /search.php?term=$1» в котором есть строка поиска, которая может содержать к примеру ‘x & y/z’ и в результате будет возвращена строка ‘search.php?term=x & y/z’, что неявляется допустимым УРЛ и будет преобразовано браузером в «search.php?term=x%20&y%2Fz=». С флагом [B] строка будет преобразована в «/search.php?term=x%20%26%20y%2Fz». Для работы этого примера понадобится установить AllowEncodedSlashes в On ибо httpd по-умолчанию не позволяет кодировать слэши в УРЛ;
- [C] chain — объединить несколько правил в цепочку. Если первое правило цепочки не удовлетворяет условиям, тогда вся цепочка будет проигнорирована;
- [CO] cookie — устанавливает cookie в формате [CO=NAME:VALUE:DOMAIN:lifetime:path:secure:httponly], параметры для secure и httponly устанавливаются как true|false;
- [DPI] discardpathinfo — отбрасывает PATH_INFO в преобразованной ссылке, полезно использовать в случаях, когда PATH_INFO уже был добавлен в предыдущем преобразовании;
- [E] env — установить переменную [E=VAR:VAL] или удалить её [E=!VAR];
- [F] forbidden — возвращает ошибку 403;
- [G] gone — возвращает ошибку 410;
- [H] handler — принудительно устанавливает обработчик для определённых типов файлов, например правило «RewriteRule !\. — [H=application/x-httpd-php]» заставит пропустить через PHP все файлы без расширения;
- [L] last — указывает, что правило является последним и процесс дальнейшего преобразования прекращается;
- [N] next — начинает процесс преобразования с первого по порядку правила, используйте этот флаг с осторожностью ибо он может привести к замкнутому циклу (т.н. петля);
- [NC] nocase — отключает проверку регистра символов;
- [NE] noescape — mod_rewrite обычно применяет правила экранирования URI к результату преобразования. Спецсимволы (такие как ‘%’, ‘$’, ‘;’, и так далее) будут экранированы их шестнадцатеричными (hexcode) подстановками (‘%25’, ‘%24’, и ‘%3B’, соответственно). Этот флаг запрещает делать это;
- [NS] nosubreq — игнорировать подзапросы, выполнять правило только для настоящих/прямых запросов;
- [P] proxy — Apache выполняет подзапрос к указанной странице с использованием программного модуля mod_proxy, при этом клиент об этом подзапросе ничего не узнает. Произойдет ошибка если модуль mod_proxy не подключен;
- [PT] passthrough — остановить преобразование и передать полученную новую ссылку дальше;
- [QSA] qsappend — добавляет исходные параметры запроса (query string) к замене. Если в подстановку не включаются новые параметры запроса, то исходные параметры запроса будут добавлены автоматически. Если же новые параметры включаются в подстановку, то исходные параметры запроса будут утеряны если не указать флаг QSA;
- [R] redirect — возвращает браузеру команду на перенаправление (по-умолчанию код 302 — MOVED TEMPORARY), код редиректа можно указать самостоятельно, например R=301 (код 301 — MOVED PERMANENTLY), но в границах 300-399, в противном случае правило не будет обработано;
- [S] skip — пропускает следующее правило, если данное правило сработало. Можно указать количество правил, например: S=2;
- [T] type — принудительно устанавливает MIME-тип целевого файла. К примеру, «RewriteRule \.pl$ — [T=text/plain]», это правило отобразит Perl скрипты в текстовом формате, а значит код скрипта будет выдан в браузер.
rewriterule примеры
Создание понятных для человека URL
ЧПУ — расшифровывается как Человекопонятный URL. Это ссылки которые визуально имеют упрощенную структуру. Ее проще запомнить.
Например, Ссылки вида http://site.com/?page=contacts нужно привести к http://site.com/contacts/.
Все в файле .htaccess пропишите:
RewriteRule ^contacts/?$ ?page=contacts [L,QSA] RewriteRule ^news/?$ ?page=news [L,QSA] RewriteRule ^news/([^/]+)/?$ ?page=news&slug=$1 [L,QSA]
Преобразования происходит благодаря флагу QSA (query string append), прописанному в квадратных скобках после каждого правила. Если строка запроса удовлетворяет правилу, она является эквивалентом указанного адреса, и выдает тот же самый контент.
Например, RewriteRule ^news/?$ ?page=news [L,QSA] и обратиться к сайту по адресу /news/, то:
- Строка запроса /news/ совпадет с указанным в правиле, значит это правило сработает;
- Флаг L (last) указывает, что после этого правила другие применяться не будут;
- Флаг QSA указывает на подстановку строки запроса и ее НЕ ЧПУ аналог;
- Строка запроса /news/ аналогична НЕ ЧПУ адресу ?page=news;
- По запросу /news/ выводится контент точно такой же, как и если набрать ?page=news.
Директива RewriteCond

Синтаксис директивы RewriteCond
Синтаксис директивы RewriteCond:
RewriteCond СравниваемаяСтрока Условие [Флаги]
- СравниваемаяСтрока — строка, которая проверяется на соответствие выражению, прописанному в параметре Условие;
- Условие — это логическое выражение, по которому проверяется параметр СравниваемаяСтрока. Часто в нем применяют регулярные выражения;
- [Флаги]. Задают дополнительные опции, например, можно установить логику объединения правил RewriteCond через логическое И [AND] (по умолчанию) или через логическое ИЛИ [OR]. Или, будет ли сравнение в условии RewriteCond выполнятся с учетом регистра или без учета регистра.
Пример директив RewriteCond, объединенных через логическое И [AND] (по умолчанию):
# одна точка входа, все запросы (кроме файлов и директорий) на /index.php RewriteCond $1 !=favicon.ico RewriteCond % !-f RewriteCond % !-d RewriteRule (.*) index.php
- может, содержать часть или весь URL.
- содержит часть URL можно при помощи переменных подстановки ($1, $2, $3), которые были созданы в соответствующем RewriteRule.
- содержит различные переменные из окружения сервера Apache: %, %, %.
Условие может содержать специальные символы:
- -d — проверка, что директория существует;
- -f — проверка, что файл существует.
Дополнительно, перед условием, допускается использование логических символов:
- !Условие — инвертирование значения, т.е. сравниваемая строка должна не соответствовать шаблону условия;
- =Условие — Условие считается простой строкой и лексически сравнивается с СравниваемаяСтрока. Истинно, если эти две строки полностью одинаковы (символ в символ). Если Условие имеет вид «» — это сравнивает СравниваемаяСтрока с пустой строкой.
Некоторые флаги RewriteCond:
- [NC] (от No Case). Регистр не имеет значения, как в СравниваемаяСтрока так и в Условие. Этот флаг эффективен только для сравнений между СравниваемаяСтрока и Условие, он не работает при проверках в файловой системе.
- [OR]. Логическое ИЛИ. Используется, когда перед директивой RewriteRule находится несколько директив RewriteCond и правило в RewriteRule должно быть выполнено при совпадении любого RewriteCond;
- [AND]. Логическое И. Используется, когда перед директивой RewriteRule находится несколько директив RewriteCond и правило в RewriteRule должно быть выполнено при совпадении всех RewriteCond. Этот флаг используется по умолчанию, так что его можно опускать.
Пример 1. Правила с набором условий:
RewriteCond $1 !^(index\.php|images|robots\.txt|public) [NC] RewriteCond % !\.(css|js|jpg|gif|png)$ RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
Блок директив содержит правило преобразования url и дополнительные условия. Смысл блока в следующем. Для любого url запустить правило перезаписи url. Проверить что url:
- Не начинается как index.php или images или robots.txt или public – т.е. не начинается на открытые нами к прямому обращению файлы и каталоги.
- Не заканчивается на .css или .js или. Не является файлом к которым мы позволяем обращаться напрямую;
- Не является реальным файлом на диске и директорией.
Если условия выполняются собрать новую строку url из двух строк. Где первая строка «index.php?/» вторая — первоначальный url.
Флаг L – закончить на этом правиле все преобразования. Флаг QSA — добавить значение из $1 к результирующей строке URL, а не заменить ее.
Разберем первое дополнительное условие из примера:
RewriteCond $1 !^(index\.php|images|robots\.txt|public) [NC]
- В параметре СравниваемаяСтрока прописывается выражение $1 – это переменная подстановки, в которой находится значение из круглых скобок, взятых из параметра Шаблон директивы RewriteRule. В параметре Шаблон содержится: ^(.*)$. Это означает, что в параметр СравниваемаяСтрока подставиться весь URL;
- Параметр Условие содержит оператор инверсии (!)условия и регулярное выражение, возвращающее результат применения его к параметру СравниваемаяСтрока. В данном случае параметр Условие звучит как: не начинается с символов: index.php или images или robots.txt или public;
- Флаг [NC]. Сравнивает регистр. Это дополнительное условие понимаем как: если без учета регистра URL не начинается с символов index.php, images, robots.txt, public то условие истинно.
Примеры
Если изначально в индекс поисковой системы попала версия «с www», в файл .htaccess добавляется редирект на «без www»:
RewriteCond % ^www.name\.site$ [NC] RewriteRule ^(.*)$ http://name.site/$1 [R=301,L]
Если произошла обратная ситуация и необходима переадресация с без «www» на «www», то в файл прописывается:
RewriteCond % ^v name\.site$ [NC] RewriteRule ^(.*)$ http://www.name.site/$1 [R=301,L]
В случае перехода на защищенный протокол https для всего сайта, необходимо настроить перенаправление с http на https, для этого в файл .htaccess добавьте:
RewriteCond % !^443$ RewriteRule .* https://%% [R=301,L]
Если данная конструкция не сработает, попробуйте другой вариант:
RewriteCond % =on RewriteRule (.*) https://%% [QSA,L]
Если циклическое перенаправление на страницах осталось, попробуйте такой вариант:
RewriteCond % off RewriteCond % !https RewriteRule ^(.*)$ https://%% [L,R=301]
Если редирект не работает и в этом случае, попробуйте такой вариант:
RewriteEngine On RewriteCond % !^443$ RewriteCond % =/page.php RewriteRule .* https://%% [R,L]
Редирект на .html
Пример, редирект с c site.ru/blog на site.ru/blog.html.
RewriteCond % (.*/[^/.]+)($|\?) RewriteRule .* %1.html [R=301,L] RewriteRule ^(.*)/$ /$1.html [R=301,L]
Редирект на страницу без слеша в конце адреса
Пример, редирект с c site.ru/blog/ на site.ru/blog.
RewriteCond % !-d RewriteRule ^(.+)/$ /$1 [R=301,L]
Редирект на страницу со слешем в конце адреса
RewriteCond % (.*/[^/.]+)($|\?) RewriteRule .* %1/ [R=301,L]
Редирект на страницу без index.php в адресе
RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]
Редирект на страницу без index.php в конце адреса
RewriteCond % ^[A-Z]\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
Битрикс
Для перенаправления на новую страницу достаточно отредактировать файл .htaccess, внеся в него такой редирект:
RewriteEngine On RewriteCond % ^www.sng-it.ru$ [NC] RewriteRule ^(.*)$ http://sng-it.ru/$1 [R=301,L]
RewriteRule ^news/happy.* /news.html [R=301,L]
Для простого редиректа условия задавать не обязательно, только правило.
Реврайт без редиректа
RewriteRule ^news/happy.* /news.html [L]
Иногда требуется, чтобы был редирект без смены адреса, т.е. реврайт без редиректа. Для этого просто не указываем флаг редирект (R), и получаем желаемый результат, теперь по адресу news/happy получим news.html, а в адресной строке останется news/happy
Редирект на мобильную версию веб-сайта
Допустим, что мобильная версия расположена поддомене m.site.ru. Переход будет происходить с главной страницы основного домена.
RewriteCond % (?i:midp|samsung|nokia|j2me|avant|docomo| novarra|palmos|palmsource| opwv|chtml|pda|mmp|blackberry|mib|symbian| wireless|nokia|hand|mobi|phone|cdm|upb|audio| SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony| alcatel|lg|eric|vx|NEC|philips|mmm|xx| panasonic|sharp|wap|sch|rover|pocket| benq|java|pt|pg|vox|amoi|bird| compal|kg|voda|sany|kdd|dbt| sendo|sgh|gradi|jb|dddi|moto| iphone|android) [NC] RewriteCond % site.ru RewriteRule ^$ http://m.site.com/ [R=302,L]
Рассмотрим подробнее код:
- Первая строка. Проверка USER_AGENT. Определяем что он относится к мобильной версии;
- Второй строкой проверяем что мы находимся на нужном домене;
- Третьей строкой, мы проверяем, что находимся на главной страницы и перенаправляем на поддомен.
Что такое .htaccess.
Как проверить работоспособность в .htaccess? Все просто, напишите в первой строчке этого файла любое слово (например MOYSITE), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (MOYSITE) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с MOYSITE.

Эта статья предназначена для тех, у кого пока нет своего сайта, и для владельцев сайтов, которые хотят повысить их юзабилити и поднять свой сайт в результатах поиска.
Что такое .htaccess ? Содержание
Определение .htaccess ?
Файл .htaccess – (от английского hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.
Файл .htaccess может содержаться как в корневом каталоге сайта, и тогда его действия распространяются на весь сайт, либо в других каталогах, и тогда его действие будет распространяться на эти каталоги.
Изменения файла .htaccess может серьёзно повлиять на работу сайта. Может нарушить работу.
Так же необдуманные действия с этим файлом могут не иметь видимых последствий, но серьёзно повлиять на изменение позиций в поисковой выдаче, поэтому мы рекомендуем сохранять копию файла .htaccess где-нибудь у себя на компьютере, чтобы потом иметь возможность вернуть прежние настройки обратно.
Где находится файл .htaccess?
Обычно файл .htaccess располагается в корневом каталоге сайта.
Наглядный пример расположения файла .htaccess в корневом каталоге:

В различных CMS можно встретить файл .htaccess.txt Он не воспринимается сервером, поэтому его необходимо переименовать в .htaccess. Файл .htaccess так же является текстовым файлом, поэтому все коррективы в него лучше всего вносить при помощи Notepad++, либо использовать простой блокнот. Использование Word невозможно для правок .htaccess, потому что Word добавляет свои скрытые символы разметки. В различных CMS существуют плагины для обеспечения наглядности внесения изменений в файл .htaccess. Однако, для внесения изменений прямо на сервере нужно использовать FTP – клиент своего сервера. В WordPress редактировать .htaccess можно с помощью модулей плагинов Yoast SEO и All in One SEO Pack. С одной стороны — не всё понятно, с другой стороны большинство работников он-лайн поддержки хостинга помогут Вам в этом деле, и даже внесут эти правки за Вас.
Как проверить работоспособность в .htaccess?
Все просто, напишите в первой строчке этого файла любое слово (например MOYSITE), сохраните файл и замените им находящийся на сервере. Если сайт продолжит работать, то .htaccess в данный момент не работает. Если же появится ошибка 500 Internal Server Error, то это значит, что веб-сервер не смог понять команду (MOYSITE) и выдал ошибку. Этот факт подтвердит, что работа .htaccess на сервере поддерживается и включена в данный момент. Чтобы вернуть сайту работоспособность удалите строчку с MOYSITE.
Синтаксис .htaccess
Синтаксис файла простой: каждая директива (команда) начинается с новой строки, после знака # можно добавлять комментарии, которые не будут учитываться сервером. Изменения на сайте вступают в силу сразу, перезагрузка сервера не требуется.
Правила задаются в том числе при помощи регулярных выражений. Для того, чтобы их прочитать, нужно понимать значение спецсимволов и переменных. Расшифруем самые часто используемые.
Основные спецсимволы:
- ^ — начало строки;
- $ — конец строки;
- . — любой символ;
- * — любое количество любых символов;
- ? — один определенный символ;
- [0-9] — последовательность символов, например, от 0 до 9;
- | — символ «или», выбирается или одна группа, или другая;
- () — иcпользуется для выбора групп символов.
Основные переменные:
-
- % — поле User-Agent, которое передает браузер пользователя;
- % — IP адрес пользователя;
- % — запрашиваемый URI;
- % — параметры запроса после знака ?.
Примеры использования файла .htaccess
- Редирект 301 и 302, при помощи .htaccess, его правильная настройка, использование, случаи применения.
- Обработка ошибок
- Настройка безопасности сайта
- Оптимизация работы сайта
- Настройка PHP
Редирект 301 и 302, при помощи .htaccess, его правильная настройка, использование, случаи применения
Это самый популярный способ использования .htaccess. Перед тем, как настраивать тот или иной вид переадресации, убедитесь, что это действительно необходимо. Например, редирект на страницы со слешем в некоторых CMS настроен по умолчанию.
ВАЖНО!
При настройке редиректов страниц не настроить случайно цепочки редиректов. Используйте редирект той или иной страницы не более одного раза. В случае цепочки редиректов вы можете запутать поисковый робот, и это очень отрицательно скажется как на позициях отдельных страниц, так и на позиции сайта целиком.
Настраиваем постраничные 301 редиректы
Это потребуется в следующих случаях:
- изменилась структура сайта и у страницы поменялся уровень вложенности;
- страница перестала существовать, но нужно сохранить ее входящий трафик (например, в случае отсутствия товара обычно делают переадресацию на товарную категорию);
- поменялся URL, что крайне нежелательно, но тоже встречается.
Просто удалить страницу очень плохо. Страница будет удалена, но “внутри интернета” она сохранится. Поисковики будут к ней обращаться, и получать 404 ответ от сервера. Лучше перенаправить его на другой URL. В этом случае есть шанс не потерять позиции сайта в выдаче и целевой трафик. Настроить 301 редирект с одной страницы на другую можно при помощи директивы простого перенаправления:
ВАЖНО!
Если вы хотите, чтобы ваш редирект работал, нужно перед строками, которые рекомендуются ниже по тексту, обязательно прописать
Закомментировать директиву можно поставив # в начале строки.
301 Редирект с одной страницы на другую (или сайт)
Для этого в файл .htaccess вносим следующие строки:
Redirect / старая-страница.html новая-страница.html
302 Редирект с одной страницы на другую (или сайт) – временный редирект. Совсем не рекомендуем его использовать. Применяется, если редирект временный.
RedirectPermanent /старая-страница.html новая-страница.html
301 Редирект с www-сайта на сайт без www
Определять, с «www» или без будет главное зеркало, можно несколькими способами:
- добавить сайт в Яндекс.Вебмастер в двух вариантах, в консоли отобразится информация, какой URL поисковик считает главным зеркалом;
- проанализировать выдачу и посмотреть, каких страниц сайта больше в индексе;
- для нового ресурса не имеет значения, с «www» или без будет адрес, выбор за вами.
Иногда, по ошибке, Яндекс.Вебмастер неправильно определяет главное зеркало, и проще помочь ему переопределиться прямо в Яндекс.Вебмастере.
Например перенаправление с http://www.site.com на http://site.com. Это очень полезная вещь, часто используется в SЕО
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Обратный редирект с домена без www на домен с www
Перенаправление с http://site.com на http://www.site.com (не советуем использовать)
Редирект со старого домена на новый
Самая очевидная причина настройки этого редиректа — переадресовать роботов и пользователей на другой адрес при переезде сайта на новый домен.
RewriteRule ^(.*)$ https://www.mysite2.ru/$1 [R=301,L]
Или
RewriteCond % ^www\.mysite1\.ru$ [NC]
RewriteRule ^(.*)$ https://www.mysite2.ru/$1 [R=301,L]
Где «mysite1» и «mysite2» — имя ваших сайтов на старый и новый домен соответственно.
Как добавить .html в конце URL?
Чтобы при вводе mysite.ru/page или mysite.ru/page/ происходило перенаправление на mysite.ru/page.html пишем в .htaccess следующее:
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]
Как убрать .html в конце URL?
Обратный редирект с mysite.ru/page.html на mysite.ru/page
RewriteRule (.*)\.html$ $1 [R=301,L]
Избавляемся от дублей
Каждая страница сайта должна быть доступна только по одному адресу. Для этого должны быть настроены:
- редирект на страницы со слешем в конце URL или наоборот;
- главное зеркало — основной адрес сайта в поиске.
Сделать это можно при помощи модуля mod_rewrite. В его составе используются специальные команды — директивы сложного перенаправления. Первой командой всегда идет включение преобразования URL:
Убрать слэш
Настроить ли переадресацию на страницы со слешем или без, в каждом случае нужно решать индивидуально. Если у сайта уже накоплена история в поиске, анализируйте, каких страниц в индексе больше. Для новых сайтов обычно настраивают редирект на слеш. Проверить, не настроена ли переадресация по умолчанию, просто: удалите/добавьте слеш в конце URL. Если страница перезагрузится с новым адресом — мы имеем дубли, требуется настройка. Если URL подменяется — все в порядке. Проверять лучше несколько уровней вложенности.
Современные CMS, например, WordPress настраивают слеш в конце строки по умолчанию.
Как убрать слэш в конце URL?
Например было mysite.com/page/, стало mysite.com/page
Управление директивами PHP при помощи .htaccess
В этой статье, мы поговорим об управлении директивами PHP с помощью файла .htaccess. Поскольку директивы для конфигурации PHP могут размещаться в файле htaccess, а не только в файле php.ini, нам нужно разобраться с тем, как можно управлять этими директивами и какие из них возможно настроить через htaccess.
Начнем с того, что не все из директив могут использоваться в конфигурационных файлах Apache, из всего так называемого списка доступны 4 директивы: php_value, php_flag, php_admin_value, php_admin_flag.
Например: параметры которые прописываются через директиву php_flag, могут принимать только бинарные значения 1 или 0 (on/off ), а сама директива нужна чтобы устанавливать логические значения.
Пример: php_flag register_globals off – используется для отключения глобальных переменных
Если же значение параметра отличается от 1 или 0, тогда используется директива php_value и делаем вывод, что она нужна для вычисления числовых значений.
Пример: php_value upload_max_filesize 30 M – используется для загрузки файла с максимальным размером 30 М.
Как, сказано было ранее, существуют еще 2 директивы ,а именно php_admin_value и php_admin_flag они не могут задаваться через файл .htaccess, поэтому их можно выставить только в файле httpd.conf, для переопределения значений других директив.
Рассмотрим на примерах несколько директив:
1) php_flag register_globals off используется для отключения глобальных переменных
2) php_flag short_open_tag оn для включения режима поддержки короткого синтаксиса
3) php_value sendmail_from root@beget.ru установка e-mail отправителя
4) php_value displays_errors 1 устанавливает разрешение на вывод сообщений об ошибках
5) php_flag engine off запрещает выполнять php в текущей директории
6) php_value max_execution_time 1000 определяет максимальное время за которое могут быть выполнены php скрипты
Также рекомендуем почитать:
Категории

- Блог
- Наши новости, акции, нововведения
- Руководства, статьи, инструкции
- Хостинг, домены, мировые новости, обзоры ПО
- Рейтинги, обзоры, отзывы
- Наши новости, акции, нововведения
- Руководства, статьи, инструкции
- Хостинг, домены, мировые новости, обзоры ПО
- Рейтинги, обзоры, отзывы
- RSS
Популярное в категории
- Новая услуга: VPS с выделенным накопителем
- Новая функция в cPanel: установка бесплатного SSL-сертификата от Let’s encrypt
- Авторизация через соцсети в Bitrix
- Создание простого и выпадающего меню на WordPress
- Cron в cPanel: запуск скрипта по расписанию
- Основы JavaScript. Урок 1. Введение в JavaScript. Что такое JavaScript.
- Что делать с ошибкой Strict Standards: Non-static method JLoader?
- Что лучше хостинг или vps?
- Где купить домен и хостинг?
- Инструкция по установке ISPmanager (последняя версия)
- SSL: понятие, суть, предназначение
- Добро пожаловать в наш блог!
