Редирект с html на без html

Как сделать редирект со страниц .html на страницы без html и также со слешем на конце на без слеша?

2 ответа 2

Для единообразия формирования URL страниц сайтов, и предотвращения появлений дубликатов страниц, вводится стандартная часть файла .htaccess

Есть несколько типов редиректов, рассмотрите каждый из них в кратце, чтобы определить какой из них вам больше подходит.

Редирект через htaccess — самый популярный, и довольно простой способ. Чтобы его сделать, вам понадобится создать в папке сайта файл с названием .htaccess (обратите внимание, что название файла начинается с точки, это не опечатка). Если вы используете CMS WordPress или Joomla, то скорее всего этот файл у вас уже есть, в этом случае вам нужно будет просто отредактировать его.
Читайте ниже чтобы узнать какие именно инструкции в нем нужно прописать, чтобы создать перенаправление.

Редирект при помощи PHP — подойдет в том случае, если вы разбираетесь в PHP и знаете структуру своего сайта. Этот вариант подойдет вам, если ваш сайт написан не на CMS. В ином случае лучше используйте редирект через htaccess.

Редирект HTML — если у вас простой HTML сайт и вам нужно сделать перенаправление для одной страницы — это самый простой вариант. Сделать перенаправление для всего сайта этим способом будет трудозатратно, особенно если у вас на сайте больше 10 страниц.

Редирект при помощи JavaScript — этот способ подойдет также в том случае, если у вас простой сайт, либо если нужно сделать редирект для одной — двух страниц, либо для всего сайта в целом.

Инструкции, которые вы увидите ниже, нужно прописать в файл .htaccess в самое начало.

    Редирект всего сайта (всех страниц) на другой сайт

Пропишите эту строку в .htaccess файле, и тогда все посетители вошедшие на сайт по протоколу HTTP будут перенаправляться на защищенный протокол HTTPS.

Читайте также  Постройте сечение четырехугольной пирамиды pabcd

Если вы прописываете редирект для WordPress, то обратите внимание на то, что в файле уже есть строка RewriteEngine On. Поэтому сразу под ней вам нужно добавить такие строки

В PHP редирект делается так: сервер отправляет заголовки headers браузеру посетителя, и тот переходит по нужному адресу автоматически.
Стоит отметить важный момент, отправлять заголовки можно только до вывода другой информации. То есть они должны отправляться до вывода любой другой информации через echo и до отправки кук.

    Редирект на другой сайт

Чтобы сделать редирект через HTML, нужно добавить на каждую страницу где он планируется специальный мета тег. Мета тег прописывается внутри тега .
На больших сайтах этот метод не удобен, и рекомендуется использовать редирект через htaccess.

    Редирект на другой сайт

Этот вид перенаправления удобен тем, что его код можно прописать в одном файле (в отличие от html метода), и этот файл вставить на каждой странице прописав

    Редирект на другой сайт

Для начала включаем SEF (ЧПУ) в глобальных настройках и Перенаправление URL, далее файл htaccess.txt, который лежит в корне (увидите его когда по FTP зайдете), переименовываем в .htaccess (точка в начале), как раз в нем и будет работать.

Пояснение: 301 редирект ( постоянное перенаправление с одного адреса на другой) используют для склейки url адресов, если страница изменила свой адрес или у одного документа имеется полный дубль по другому адресу.

Примеры:

1. У главной страницы сайта site.ru всегда присутствует полный ее дубль по адресу site.ru/index.php
Используем код для перенаправления:

Код:

Redirect 301 /index.php http://site.ru/

Код

RewriteCond % ^[A-Z]<3,9> /index.php HTTP/
RewriteRule ^index.php$ http://site.ru/ [R=301,L]

2. Если у вашего сайта несколько имен, но вы хотите, чтобы пользователи всегда видели в адресной строке основное имя сайта, используйте следующие строки сразу после RewriteEngine On:

Читайте также  Почему не скачиваются приложения на компьютер

Код

RewriteCond % !^site.ru$
RewriteRule ^(.*) http://site.ru/$1 [R=301,L]

2.1 Редирект с www на без www

Код

RewriteCond % ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

2.2 Редирект без www на www

Код

RewriteCond % ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

3. 301 редирект на окончание .html (для тех у кого включен этот суффикс), перенаправит со страниц site.ru/article и site.ru/article/ на страницу site.ru/article.html

Код

RewriteCond % (.*/[^/.]+)($|?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Код

4. Редирект с .html на без .html, т.е. с site.ru/article.html на site.ru/article (для тех кто сначала включил .html, а потом решил избавиться от него)

Код

RewriteBase /
RewriteRule (.*).html$ $1 [R=301,L]

Код:

REDIRECTMATCH 301 (.*).html$ http://site.ru$1

5. Редирект для страниц с параметрами, например со страницы site.ru/blog?limitstart=0 на site.ru/blog

Код

RewriteCond % ^limitstart=0
RewriteRule ^blog http://site.ru/blog? [R=301,L]

Редирект с ?limitstart=0 без указания категории:

Код:

RewriteCond % ^limitstart=0$ [NC]
RewriteRule (.*) $1? [R=301,L]

6. И еще допустим поменяли структуру и нужно чтобы все страницы старого раздела перенаправлялись на те же страницы только нового раздела, например site.ru/blog/raznoe/article на site.ru/blog/article

Код

RewriteRule ^blog/raznoe/(.*)$ http://site.ru/blog/$1 [R=permanent,L]

7. 301 редирект с адреса без слеша на слеш, то есть с site.ru/article на site.ru/article/

Код

8. Редирект со слеша на без слеша в конце, т.е. с site.ru/article/ на site.ru/article

Код

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

еще вариант как избавиться от завершающего слеша на конце

Код

вариант избавления от слэша для страниц с параметрами, на примере страниц с пагинацией site.ru/categoriya?start=5/

Код:

RewriteCond % ^start=(d+)/
RewriteRule ^(.*) /$1?start=%1 [R=301,L]

9. Сначала забыли включить SEO в глобальных настройках, а потом включили, как итог — в индексе много документов с /index.php в адресе. Избавиться можно так —

Код

RewriteRule ^index.php/(.*)$ http://mysite.ru/$1 [R=permanent,L]

— по такому же принципу можно избавиться от какой либо вложенности, например редиректить с site.ru/ru/catalog на site.ru/catalog (/ru/ убирается)

Читайте также  Программа для прошивки хонор 4с

10. Запрет доступа для плохих ботов

Код:

SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
SetEnvIfNoCase User-Agent "^MSNBot" bad_bot
SetEnvIfNoCase User-Agent "^Baiduspider" bad_bot
SetEnvIfNoCase User-Agent "^Ezooms" bad_bot
# продолжите список сами, указывайте юзер-агент плохих ботов

Order Allow,Deny
Allow from all
Deny from env=bad_bot

robots.txt отдаёт, на остальное 404 (для юзер агент — Baiduspider и Ezooms )

Код:

RewriteCond % (Baiduspider|Ezooms) [NC]
RewriteCond % !^/robots.txt [NC]
RewriteRule .* — [R=404]

11. Редирект без указания домена (удобно при переносе сайта на другой домен)

Код

RewriteCond % ^(.+)$ [NC]
RewriteRule ^oldpage$ http://%1/newpage$1 [R=301,L]

12. Редирект домена на другой домен (переадресация сайта)

Код

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

13. Редирект на любую страницу по ip пользователя или при запросе конкретной страницы (а также по маске имени).
Если у пользователя ip 192.152.37.125, то он будет перенаправлен на страницу user.php:

Код
SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir"
RewriteCond % redir
RewriteRule ^/$ /user.php

Круглые скобки () используются для выделения групп символов. В дальнейшем к ним можно обращаться по номеру.
Символ ^ обозначает начало строки.
Символ $ обозначает конец строки.
Символ . обозначает любой символ.
Символ | обозначает альтернативу. Например, выражения "A|B" означают "A или B".
Символ ? ставится после символа (группы), который может как присутствовать, так и отсутствовать.
Символ * ставится после символа (группы), который может отсутствовать или присутствовать неограниченное число раз подряд.
Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз.
Квадратные скобки [] используются для перечисления допустимых символов.
Квадратные скобки [^] используются для перечисления недоступных символов.
Символ ставится перед спецсимволами, если они нужны в своем первозданном виде.
Все, что расположено после символа ‘#’, считается комментарием.

Ссылка на основную публикацию
Adblock
detector