Такой редирект будет работать следующим образом:
Запрос (URL) | Редирект (URL) |
---|---|
http://mysite/page/ | http://mysite/page |
http://mysite/page/?value=1 | http://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
- RewriteCond %{REQUEST_URI} !\?
- RewriteCond %{REQUEST_URI} !\&
- RewriteCond %{REQUEST_URI} !\=
- RewriteCond %{REQUEST_URI} !\.
(.*)\/$ http://%1/$1 [L,R=301]
На память
КАК СКРЫТЬ ИЛИ ОТКРЫТЬ КОНТЕНТ ДЛЯ МОБИЛЬНЫХ УСТРОЙСТВ
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 обозначает постоянный редирект:
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
9(.![](/800/600/https/fuzeservers.ru/wp-content/uploads/f/1/c/f1ccdba4274115be5e45d0aeb7df9a23.png)
Код отлично работает при добавлении / в конце БОЛЬШИНСТВА 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? ключевые слова=тест/
Я быстро понял, что весь код, который я применил, не работает по двум причинам.
- Они не применяют / — они просто делают это возможным, если он заблокирован
- Термин REQUEST_URI или $1 или $2 не включают ?keyword= (на самом деле я не могу найти ничего, что ссылалось бы на эту часть URL-адреса, поэтому я не могу включить его правильно)
Что бы я ни делал, я не могу получить ? или что-нибудь после него, чтобы быть помещенным перед /.