Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
system:apache:rewrite [2022/01/16 00:45] – [Rewrite] mirocow | system:apache:rewrite [2022/01/16 01:07] (текущий) – [Вопрос / ответ] mirocow | ||
---|---|---|---|
Строка 417: | Строка 417: | ||
< | < | ||
+ | ==== Вопрос / ответ ==== | ||
+ | Примеры настройки 301 редиректов в htaccess | ||
+ | < | ||
+ | RewriteEngine On</ | ||
+ | |||
+ | Комментарий в файле htaccess обозначается символом решётка «#» в начале строки | ||
+ | # Текстовый комментарий, | ||
+ | 301-редирект с домена без WWW на домен с WWW префиксом | ||
+ | |||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | С домена с WWW префиксом на без | ||
+ | |||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Для HTTPS-версии: | ||
+ | |||
+ | < | ||
+ | RewriteCond % =on | ||
+ | RewriteRule ^(.*)$ https:// | ||
+ | |||
+ | Стандартный 301-редирект с одной статической страницы на другую | ||
+ | Redirect 301 /was.php http:// | ||
+ | При этом в файле htaccess, новый адрес указывать необходимо полностью с http и доменным именем. | ||
+ | В ряде случаев полезен редирект через RewriteRule | ||
+ | |||
+ | < | ||
+ | |||
+ | Настройка 301-редирект для страницы с GET параметрами | ||
+ | Скажем, | ||
+ | |||
+ | < | ||
+ | RewriteRule ^dir/ | ||
+ | </ | ||
+ | |||
+ | Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), | ||
+ | |||
+ | < | ||
+ | RewriteRule ^dir/ | ||
+ | |||
+ | Убираем все GET-параметры после знака вопроса (?) | ||
+ | Располагать после: RewriteBase / | ||
+ | |||
+ | 301-редирект со страницы без заданного параметра в корень | ||
+ | Если адрес имеет следующий вид: http:// | ||
+ | |||
+ | < | ||
+ | RewriteRule ^$ /? [R=301, | ||
+ | |||
+ | 301-редирект для конкретного файла, а не целой папки | ||
+ | RewriteRule ^dir/$ http:// | ||
+ | |||
+ | Как быть с доменами в зоне РФ? | ||
+ | 301-редирект с домена на домен | ||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | И для домена в зоне РФ: | ||
+ | |||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Настройка редиректа на папки со слешем в конце / | ||
+ | Настройка редиректа на папки без слеша (убираем слеш в конце) | ||
+ | 301-редирект с домена на папку на другом домене | ||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Редирект со всех файлов домена, | ||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Редирект всех файлов в папке на заданный файл | ||
+ | < | ||
+ | |||
+ | Редирект файлов из заданной папки кроме, определенного файла | ||
+ | < | ||
+ | RewriteRule ^dir(.*)$ /all.php [L,R=301] | ||
+ | </ | ||
+ | |||
+ | Смена страниц с html расширения на php расширение | ||
+ | < | ||
+ | |||
+ | Перенос картинок / изображений из папки /img/ на поддомен | ||
+ | < | ||
+ | |||
+ | Задание типа индексной страницы (php, html, htm и другие) | ||
+ | Указывается порядок загрузки типов индексного файла, лежащих в корне каталога. | ||
+ | |||
+ | < | ||
+ | |||
+ | Редирект с индексной страницы php на саму папку (корень) | ||
+ | < | ||
+ | RewriteRule ^index\.php$ http:// | ||
+ | |||
+ | Для всех индексных страниц на сайте: | ||
+ | < | ||
+ | |||
+ | Редирект с поддомена на основной домен второго уровня | ||
+ | < | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Редирект для заданного файла в различных директориях (папках) | ||
+ | < | ||
+ | |||
+ | Код позволяет поставить 301-редирект со всех папок вида http:// | ||
+ | |||
+ | < | ||
+ | |||
+ | Код позволяет создать копию страницы с относительным адресом / | ||
+ | |||
+ | 301-редирект с HTTPS-версии на HTTP | ||
+ | Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем. | ||
+ | |||
+ | Перенос сайта на версию с HTTPS (для всех страниц) | ||
+ | < | ||
+ | RewriteCond % =on | ||
+ | RewriteRule ^(.*)$ https:// | ||
+ | |||
+ | Настройка 403 кода ответа сервера для реф-спама (301-редирект для спама по REFERER) для списка ресурсов | ||
+ | Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER. | ||
+ | |||
+ | Внимание, | ||
+ | |||
+ | < | ||
+ | |||
+ | ! Для сайтов, | ||
+ | |||
+ | < | ||
+ | header(«Location: | ||
+ | exit(); | ||
+ | ?></ | ||
+ | |||
+ | ! Оптимально настраивать все редиректы сразу на конечную страницу (без промежуточных перенаправлений, | ||
+ | |||
+ | Если требуется настроить редирект только для некоторых USER_AGENT’ов, | ||
+ | < | ||
+ | RewriteRule (.*) http:// | ||
+ | |||
+ | Если требуется настроить редирект для всех поисковых роботов (представлен список их USER_AGENT’ов) | ||
+ | < | ||
+ | RewriteRule (.*) http:// | ||
+ | |||
+ | Несколько простых редиректов | ||
+ | Редирект с www.htaccess.ru/ | ||
+ | |||
+ | < | ||
+ | RewriteRule ^component/ | ||
+ | |||
+ | Редирект с www.htaccess.ru/ | ||
+ | |||
+ | < | ||
+ | RewriteRule ^index\.php$ /? [R=301, | ||
+ | |||
+ | Синтаксис для регулярных выражений файла htaccess | ||
+ | * . — Точка заменяет произвольный символ. | ||
+ | * [abc] — обозначает перечень символов, | ||
+ | * [^abc] — перечень символов, | ||
+ | * * — означает, | ||
+ | * [abc]* — команда найдёт идущие подряд символы из заданного набора. | ||
+ | * [^abc]* — с точностью до наоборот. | ||
+ | * .* — заменяет абсолютно любой набор символов. “.*” — найдёт все подстроки между кавычками. | ||
+ | * ^ — начало строки (в том случае, | ||
+ | * $ — обозначает конец строки. | ||
+ | * \w — буква, цифра или подчёркивание _. | ||
+ | * \d — заменяет любую цифру. | ||
+ | * \D — заменяет любой символ, | ||
+ | * 9 — заменяет любую цифру. | ||
+ | * [a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре. | ||
+ | * [A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре. | ||
+ | * [a-zA-Z] — любая буква от a до Z в любом регистре. | ||
+ | * [a-Z] — то же самое. | ||
+ | |||
+ | ❓Как сделать 301 редирект папки | ||
+ | Сделать переадресацию папки необходимо в нескольких случаях – если вы перемещаете её в пределах сайта для сокращения url и оптимизации структуры, | ||
+ | |||
+ | Редирект в пределах сайта | ||
+ | В первом случае сокращается адрес folder, поэтому структура становится более понятна ботам. Также можно собрать в одном месте материалы одной темы, что хорошо для оптимизации сайта. Например, | ||
+ | |||
+ | И нужно, чтобы она открывалась по адресу: | ||
+ | |||
+ | При этом важно сохранить урл, изменив только папку корня, то есть, все страницы за folder-storage-directory должны открываться после folder-shipping. | ||
+ | |||
+ | Проще говоря, | ||
+ | |||
+ | А надо чтобы она открывалась по адресу: | ||
+ | |||
+ | Поможет в этом код: | ||
+ | |||
+ | В результате адрес сокращается и структура сайта более понятна ботам. Также плюшка оптимизации. | ||
+ | |||
+ | Редирект папки на поддомен | ||
+ | Иногда требуется переадресация папки на поддомен. Такая неприхотливая нужда возникает, | ||
+ | |||
+ | Предположим, | ||
+ | |||
+ | И надо сделать редирект 301 на: | ||
+ | |||
+ | Поможет в этом код в htaccess: | ||
+ | |||
+ | < | ||
+ | |||
+ | Так можно перенести с основного сайта на поддомены всё ненужное, | ||
+ | |||
+ | Для использования кодов просто замените в нём домен и папки на свои директории и вставьте в htaccess. Делаете редирект с одинаковым успехом на Joomla и других движках. | ||
+ | |||
+ | Источник | ||
+ | |||
+ | .htaccess | ||
+ | При изменении файла новый набор настроек сразу начинает работать и не требует перезагрузки web-сервера. | ||
+ | |||
+ | |||
+ | Провайдер хостинга может запретить применение определенных директив в целях безопасности или снижения нагрузки на сервер. Названия директив может меняться, | ||
+ | |||
+ | Директива должна иметь вид: | ||
+ | |||
+ | < | ||
+ | AllowOverride All | ||
+ | Require all granted</ | ||
+ | |||
+ | /var/www/ по необходимости нужно заменить на свою директорию сайта. | ||
+ | |||
+ | После внесения изменений не забудьте перезагрузить веб-сервер, | ||
+ | |||
+ | Если вывод будет Syntax OK, то выполните: | ||
+ | |||
+ | Провайдеры по умолчанию включают эту настройку для папок с сайтами пользователей на виртуальном хостинге, | ||
+ | |||
+ | Каждая строка файла означает определенную команду конфигурации (директиву) Apache. | ||
+ | |||
+ | Пустые строки игнорируются. | ||
+ | |||
+ | Для этого нажмите правой кнопкой мыши на файл, чтобы открыть контекстное меню с пунктом “Просмотр/ | ||
+ | |||
+ | |||
+ | Filezilla использует для редактирования текстовый редактор Notepad++, который должен быть установлен на локальный компьютер. | ||
+ | |||
+ | |||
+ | В случае, | ||
+ | |||
+ | |||
+ | Ниже будут рассмотрены наиболее востребованные из настроек в контексте web-хостинга. | ||
+ | |||
+ | Механизм перенаправления (редиректа) запросов | ||
+ | Затем следует перечень специальных команд для настройки перенаправления, | ||
+ | |||
+ | В своей работе механизм перенаправления mod_rewrite применяет специальную технологию программирования regexp для сравнения запросов с определенным шаблоном. | ||
+ | |||
+ | Склейка разных адресов одного сайта | ||
+ | < | ||
+ | RewriteCond % ^www.mysite\.ru$ [NC] | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | 1. Указание основного зеркала | ||
+ | Предназначен для того, чтобы преобразовать домен с www на URL без www. Достаточно ввести правило: | ||
+ | |||
+ | < | ||
+ | RewriteCond %{HTTP_HOST} ^www.название_вашего_сайта\ru$ [NC] # | ||
+ | RewriteRule ^( *)$ http:// | ||
+ | 2. Перенос на https | ||
+ | На сегодняшний день поисковик Google активно призывает владельцев сайтов к использованию безопасного соединения, | ||
+ | |||
+ | < | ||
+ | RewriteCond %(HTTPS) !on | ||
+ | RewriteRule (.*) https:// | ||
+ | 3. Проставление слеша в конце адреса | ||
+ | Если вы не хотите, | ||
+ | |||
+ | < | ||
+ | RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ | ||
+ | Выполнив данную команду, | ||
+ | |||
+ | 4. Перенос домена | ||
+ | Изменив название сайта, не забудьте в .htaccess указать: | ||
+ | |||
+ | < | ||
+ | RewriteCond %{HTTP_HOST} ^www\.yoursite.ru\.ru$ [NC] | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | Оптимизируя сайт и под Яндекс, | ||
+ | |||
+ | < | ||
+ | RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC] | ||
+ | RewriteRule ^([^/]+) $1 [L] | ||
+ | RewriteCond %{HTTP_HOST} ^mysite\.ru | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | 5. Запретные команды для поискового бота | ||
+ | В .htaccess, так же, как и в robots.txt, можно закрыть доступ к сайту для роботов поисковых систем: | ||
+ | |||
+ | < | ||
+ | RewriteCond %{USER_AGENT} Googlebot | ||
+ | RewriteRule .* - [F] # F – выдает ошибку 403 – запрещено для сканирования</ | ||
+ | |||
+ | 6. Редирект с одного сайта на другой | ||
+ | |||
+ | < | ||
+ | RewriteCond %{HTTP_HOST} domain1.ua | ||
+ | RewriteRule (.*) http:// | ||
+ | |||
+ | Редирект с www на без www | ||
+ | |||
+ | < | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] | ||
+ | RewriteRule ^(.*)$ http:// | ||
+ | |||
+ | Или более понятный синтаксис | ||
+ | |||
+ | < | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC] | ||
+ | RewriteRule ^(.*)$ http:// |