В чем разница между [R=301] и [R=301,L]?
может ли кто-нибудь поделиться со мной разницей между [R=301] и [R=301,L] в перенаправлении 301? Что лучше всего подходит для перенаправления URL-адресов?
хотя оба работают отлично, я заметил, что [R=301, L] изменяет URL на новый URL, а [R=301] только перенаправляет содержимое.
может ли кто-нибудь поделиться некоторым пониманием этого, пожалуйста?
3 ответов
независимо от R=301
здесь L
флаг означает Last
и должен быть помещен в правила, когда вы хотите пометить конец определенного правила перезаписи.
флаг [L] заставляет mod_rewrite прекратить обработку набора правил. В большинстве случаев, это означает, что если правило совпадает, никаких дополнительных правил будет обработано. Это соответствует последней команде в Perl, или команда break В C. Использовать этот флаг указывает, что текущий правило должно применяться немедленно без рассмотрения дальнейших правил.
R
делает перенаправление и L
запрещает применять правила ниже. Если нет L
затем правила rest будут применены к новому URL-адресу.
официальная документация говорит:
вы почти всегда захотите использовать [R] в сочетании с [L] (то есть использовать [R,L]), потому что сам по себе флаг [R http://thishost [: thisport] в URI, но затем передает это следующему правилу в наборе правил, что часто может привести к Предупреждения "недопустимый URI в запросе".
основное различие между флагами [L] и [R=301,L] заключается в том, что флаг R вызывает явное внешнее перенаправление HTTP (есть одно исключение), в то время как без флага R правило также может вызвать неявное внутреннее перенаправление, в зависимости от фактического правила и запроса.
необязательный код состояния просто указывает тип ответа перенаправления. 301 обозначает постоянное перенаправление: