• Редирект 301 - файл .htaccess



    Можно отметить, что это даннная настройка .htaccess редиректа - конфигурационного файла Apache, одна из самых используемых.
    Директива .htaccess выполняет редирект посетителя, запрашивающего документ на другой URL . Выполняет внешний редирект (сообщая браузеру о
    необходимости загрузить другой URL ).

    301 редирект с одной страницы на другую

    Самый простой вариант
    Код:
    Redirect 301 /test-1/ http://site.ru/test-2/
    Более подробный
    Код:
    RewriteCond %{REQUEST_URI} ^/test/$
    RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]
    301 редирект с www на без www (главное зеркало – домен без www)
    Код:
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
    301 редирект с без www на www (главное зеркало – домен с www)
    Код:
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
    301 редирект со страниц со слешем на без слеша (весь сайт)
    Код:
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} ![^\/]$
    RewriteRule ^(.*)\/$ /$1 [R=301,L]
    301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)
    Код:
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]
    Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
    Код:
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} ![^\/]$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]
    Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
    Код:
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} ![^\/]$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
    Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы
    Код:
    RewriteCond %{REQUEST_URI} ^\/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} \/$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} \/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)\/$ http://www.%1/$1 [L,R=301]
    Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
    Код:
    RewriteCond %{REQUEST_URI} ^\/$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} \/$ 
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} !\/$
    RewriteCond %{HTTP_HOST} ^www\.(.*)$
    RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
     
    RewriteCond %{REQUEST_URI} !\?
    RewriteCond %{REQUEST_URI} !\&
    RewriteCond %{REQUEST_URI} !\=
    RewriteCond %{REQUEST_URI} !\.
    RewriteCond %{REQUEST_URI} \/$
    RewriteCond %{HTTP_HOST} ^([^www].*)$
    RewriteRule ^(.*)\/$ http://%1/$1 [L,R=301]
    301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
    Код:
    RewriteCond %{REQUEST_URI} /index.php
    RewriteCond %{QUERY_STRING} ^\z
    RewriteRule ^(.*)$ http://site.ru/? [R=301,L]
    или таким образом
    Код:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://site.info/ [R=301,L]
    301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

    Пример: типа site.ru/index.php?n=1 на site.ru/?n=1
    Код:
    RewriteCond %{REQUEST_URI} /index.php
    RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
    301 редирект url с GET параметрами (динамический URL) на статический

    1 вариант (простой адрес с GET параметром)
    Код:
    RewriteCond %{QUERY_STRING} ^id=229
    RewriteRule ^.*$ /supermodel/? [R=301,L]
    2 вариант (со страницы и GET параметром)
    Код:
    RewriteCond %{REQUEST_URI} /test/
    RewriteCond %{QUERY_STRING} ^id=229
    RewriteRule ^.*$ /supermodel/? [R=301,L]
    Все страницы одного домена на главную страницу другого домена
    Код:
    RewriteCond %{REQUEST_URI} (.*)
    RewriteRule ^(.*)$ http://site.ru/ [L,R=301]
    Каждая страница одного домена на такой же адрес другого url
    Код:
    RewriteCond %{REQUEST_URI} (.*)
    RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
    Редирект с протокола http на https.
    Код:
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
    Обратный редирект. Исключаем использование защищенного протокола не отключая его физически на хостинге.

    Редирект с протокола https на http.
    Код:
    RewriteCond %{HTTPS} =on
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

     

     

    Форум Поиск решения
    Веб Форум посвящен поиску оптимального решения по темам: информационной безопасности, web разработки, поискового продвижения и оптимизации сайтов. Будьте вежливы друг с другом, пишите в соответствующие разделы, тогда Вам быстро дадут советы и необходимые профессиональные рекомендации!
    Читайте нас: