Rewriterule 1 l r 301: Как сделать 301-редирект в htaccess, как настроить правильный 301 редирект для сайта

(.*)\/$ /$1 [R=301,L]

Такой редирект будет работать следующим образом:

Запрос (URL)Редирект (URL)
http://mysite/page/http://mysite/page
http://mysite/page/?value=1http://mysite/page?value=1
http://mysite/page.html/http://mysite/page.html
http://mysite/page?value=1/http://mysite/page?value=1
http://mysite/pageбез редиректа
http://mysite/page.htmlбез редиректа
http://mysite/page?value=1без редиректа

301 редирект со страниц без слеша на страницы со слешем в конце URL

Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL

  1. RewriteCond %{REQUEST_URI} !\?
  2. RewriteCond %{REQUEST_URI} !\&
  3. RewriteCond %{REQUEST_URI} !\=
  4. RewriteCond %{REQUEST_URI} !\. (.*)\/$ http://%1/$1 [L,R=301]
Previous Post

На память

КАК СКРЫТЬ ИЛИ ОТКРЫТЬ КОНТЕНТ ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ


Next Post

На память

Как добавить чистую страницу (шаблон) WordPress



Настройка редиректа с помощью файла .htaccess

Что такое файл .htaccess? Файл .htaccess – это дополнительный конфигурационный файл веб-сервера Apache.

Его используют для настройки веб-сервера, а также для задания правил обработки различных URL-адресов сайта.

Для настройки 301 редиректа (переадресации) в файле .htaccess чаще всего применяют одну из трёх директив: Redirect, RedirectMatch или RewriteRule. Директивы относятся только к папке, где размещен .htaccess, а оттуда распространяются на дочерние папки.

Редирект с http на https

Если необходимо сделать 301 редирект всего сайта с https на http, в файл прописывается следующее:

RewriteEngine On  
RewriteCond %{HTTPS} off  
RewriteRule ^(. (.*)$ http://new_name.ru/$1 [L,R=301]

301 редирект с 404 Not Found

Код 404 Not Found (страница не найдена) присваивается удалённой или несуществующей странице на сайте, а также часто возникает при попутке неправильно ввести url-адрес. Создание постоянного перенаправления с таких страниц актуально для контентных сайтов и крупных интернет-магазинов, где страницы часто удаляются по естественным причинам. Тогда возникает потребность перенаправить посетителей на одну из главных страниц сайта, чтобы они не уходили с ресурса, при виде ошибки.

301 редирект для страниц 404 Not Found сделать совсем несложно. Например, этот код перенаправит со всех 404-страниц на главную сайта:

ErrorDocument 404 http://www.domain.com/dont_exit.html

Редирект с главной страницы site.ru/index.php на основное зеркало site.ru

В тех случаях, когда главная страница сайта может быть недоступна по нескольким адресам одновременно, применяют следующую конструкцию:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\. (.*)$ http://site.ru/ [L,R=301]  

apache — В чем разница между [R = 301] и [R = 301, L]?

спросил

Изменено 4 года, 3 месяца назад

Просмотрено 38 тысяч раз

Кто-нибудь может поделиться со мной разницей между [R=301] и [R=301,L] в переадресации 301? Что лучше всего подходит для перенаправления URL-адресов?

Хотя оба работают отлично, я заметил, что [R=301,L] изменяет URL-адрес на новый URL-адрес, а [R=301] только перенаправляет содержимое.

Кто-нибудь может поделиться информацией об этом, пожалуйста?

  • apache
  • .htaccess

Независимо от R=301 там L флаг означает Last и должен быть помещен в правила, когда вы хотите отметить конец определенного переписать правило.

Согласно официальный документ:

Флаг [L] заставляет mod_rewrite прекратить обработку набора правил. В В большинстве контекстов это означает, что если правило совпадает, дальнейшие правила не применяются. будет обработан. Это соответствует последней команде в Perl или команда break в C. Используйте этот флаг, чтобы указать, что текущая Правило следует применять немедленно, не рассматривая другие правила.

2

R делает редирект и L запрещает применять любые правила ниже этого. Если нет L , то остальные правила будут применяться к новому URL.

Официальная документация гласит:

Вы почти всегда будете использовать [R] в сочетании с [L] (то есть использовать [R,L]), потому что сам по себе флаг [R] добавляет http://thishost[:thisport] к URI, но затем передает его следующему правилу в наборе правил, что часто может приводить к предупреждениям «Недопустимый URI в запросе».

Основное различие между флагами [L] и [R=301,L] заключается в том, что флаг R вызывает явное внешнее перенаправление HTTP (есть одно исключение), в то время как без флага R правило также может вызывать только неявное внутреннее перенаправление , в зависимости от фактического правила и запроса.

Необязательный код состояния просто указывает тип ответа перенаправления. 301 обозначает постоянный редирект:

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

9(. *)$ $1/ [L,R=301]

Код отлично работает при добавлении / в конце БОЛЬШИНСТВА URL-адресов, за исключением тех, которые содержат ? в середине URL-адреса. Как показано ниже:

https://www.example.com/list-of-all-objects/search?keywords=test

Этот URL-адрес с текущим кодом, указанным выше, изменится при загрузке на этот: https:/ /www.example.com/list-of-all-objects/search/?keywords=test

Когда это должно выглядеть так: https://www.example.com/list-of-all-objects/search? ключевые слова=тест/

Я быстро понял, что весь код, который я применил, не работает по двум причинам.

  1. Они не применяют / — они просто делают это возможным, если он заблокирован
  2. Термин REQUEST_URI или $1 или $2 не включают ?keyword= (на самом деле я не могу найти ничего, что ссылалось бы на эту часть URL-адреса, поэтому я не могу включить его правильно)

Что бы я ни делал, я не могу получить ? или что-нибудь после него, чтобы быть помещенным перед /.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *