301 rewriterule: 301 Редирект .htaccess — полный обзор с примерами — Записки преподавателя

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

спросил

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

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

Кто-нибудь может поделиться со мной разницей между [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

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

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

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

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

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

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

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

apache — перенаправление 301 не работает для домашней страницы, возможно, проблема с правилом перезаписи?

Я установил 301 редиректы для всех страниц один за другим, так как домен и структура сайта разные.

Используя шаблон: 301 перенаправление /страница https://newdomain.com/new-page

Но у меня есть некоторые проблемы с перенаправлением домашней страницы, добавление

301 перенаправление / https://newdomain.com работает для домашней страницы, но удаляет косую черту между .com и остальными URL-адресами, поэтому часть моих перенаправлений заканчивается чем-то вроде https://newdomain.comnewpage . Проблема присутствует только для страниц в корневом каталоге, подкаталоги работают как положено.

Я предполагаю, что проблема может заключаться в существующих правилах перезаписи со старого сайта .htaccess.

Их два (старый сайт — Laravel), один в www и один в публичном подкаталоге. 9/index.php [Л] # Обработка заголовка авторизации RewriteCond %{HTTP:Авторизация} . RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Авторизация}]

  • апач
  • .htaccess
  • перенаправление

5

добавление переадресации 301 / https://newdomain.

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

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