Что нового?

FAQ - редиректы в htaccess - Поисковая оптимизация, продвижение сайтов на Joomla (SEO)

Mario

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

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

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

Redirect 301 /index.php http://site.ru/
или
Код

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

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

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

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

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

Вариант №2 (тоже самое только без указания домена, + редирект на https)
Код

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

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

RewriteCond %{HTTP_HOST} ^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 %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1.html [R=301,L]
RewriteRule ^(.*)/$ /$1.html [R=301,L]

Или
Код

REDIRECTMATCH 301 (.*/[^/.]+)($|\?)$ http://site.ru$1.html

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 %{QUERY_STRING} ^limitstart=0
RewriteRule ^blog http://site.ru/blog? [R=301,L]

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

RewriteCond %{QUERY_STRING} ^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/
Код

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

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

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

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]

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

RewriteCond %{QUERY_STRING} ^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/
убирается)

10. Запрет доступа для плохих ботов
пример №1
Спойлер
Код
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

[свернуть]

пример №2
Спойлер
robots.txt отдаёт, на остальное 404 (для юзер агент - Baiduspider и Ezooms )
Код
RewriteCond %{HTTP_USER_AGENT} \b(Baiduspider|Ezooms)\b [NC]
RewriteCond %{REQUEST_URI} !^/robots\.txt [NC]
RewriteRule .* - [R=404]

[свернуть]

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

Код

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

12. Редирект на главную, если в ссылке несколько слешей(site.ru/catalog////article), от 2 до 14.
Код

RewriteCond %{REQUEST_URI} /{2,14} [NC]
RewriteRule (.*) / [R=301,L]

13.
Перенаправление урл с id на БЕЗ id (при переходе на Joomla 3.8.0) для
сохранения позиций - site.ru/38-article на site.ru/article
Код

RewriteCond %{REQUEST_URI} ^(.*)/(\d+)-([^/]+)$
RewriteRule ^ %1/%3 [L,QSA,R=301]



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