0 Пользователей и 1 Гость просматривают эту тему.
  • 95 Ответов
  • 124543 Просмотров
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
FAQ - редиректы в htaccess
« : 25.07.2012, 03:53:39 »
Много вопросов по редиректам, устроим мини-фак раз уж поиском не пользуетесь.

Для начала включаем 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
Спойлер
[свернуть]

пример №2
Спойлер
[свернуть]

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]

СИНТАКСИС РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ:
Спойлер
[свернуть]

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

----------------------------------------------------------------------------------------------

Обратите внимание!
Любое изменение в .htaccess вы должны тестировать и проверять - все ли у вас работает на сайте, например, могут возникнуть проблемы с различными формами - авторизация, отправка сообщения\комментария и т.д., особенно при перенаправлениях с адреса без слеш на конце НА слеш или с адреса без .html НА .html в конце! Будьте внимательны.

----------------------------------------------------------------------------------------------

PS: Просьба вопросы здесь не задавать, постим только готовые решения!

Если у вас вопрос, который не освещен в данном FAQ'е, - создайте отдельную тему!

Когда вы решите проблему, пожалуйста, запостите сюда свое решение, если оно связано с .htaccess

----------------------------------------------------------------------------------------------
« Последнее редактирование: 20.10.2017, 22:52:40 от ELLE »
*

beagler

  • Живу я здесь
  • 3274
  • 390 / 4
  • https://alorisman.ru/
Re: FAQ: редиректы в .htaccess
« Ответ #1 : 30.07.2012, 23:04:35 »
Ещё один способ перенаправления с .html на без .html
Код
REDIRECTMATCH 301 (.*)\.html$ http://site.ru$1
Предложенный в шапке способ у меня не работает - подставляет физический путь.
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Re: FAQ: редиректы в .htaccess
« Ответ #2 : 05.08.2012, 01:20:35 »
Спасибо за альтернативный метод, постепенно буду добавлять различные варианты.
« Последнее редактирование: 09.08.2012, 15:43:56 от ELLE »
*

Батяня

  • Новичок
  • 8
  • 1 / 0
Re: faq: редиректы в.htaccess
« Ответ #4 : 07.11.2012, 22:53:44 »
Если у вас есть чем дополнить пост, отписывайтесь в теме, потом сведем в шапку и закроем.
Оставил себе помимо вашего поста еще одну закладку, думаю будет интересно взглянуть и вам: http://www.art-shok.ru/advice/htaccess-examples/
*

Rival

  • Захожу иногда
  • 189
  • 16 / 0
Re: faq: редиректы в.htaccess
« Ответ #5 : 09.11.2012, 00:04:39 »
Дополнение к 2. Если у вашего сайта несколько имен...
Код
 RewriteCond %{HTTP_HOST} ^зеркало\.ру$ [NC]
RewriteCond %{REQUEST_FILENAME} !robots.txt$
RewriteCond %{REQUEST_FILENAME} !google8.html$
RewriteRule ^(.*)$ http://сайт.ru/$1 [R=301,L]
Исключения редиректа для некоторых файлов, чтобы они загружались из зеркала, а не основного сайта.
Здесь указаны robots.txt  и google8.html


*

Go-destroy

  • Захожу иногда
  • 221
  • 4 / 1
Re: faq: редиректы в.htaccess
« Ответ #6 : 09.11.2012, 14:43:23 »
Как избавиться от таких дублей?
http://site.ru/kateroria/podkategoria/index.php
Рип шаблонов: 5 wmz
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Re: FAQ - редиректы в.htaccess
« Ответ #7 : 20.12.2012, 19:42:43 »
Прошу проещения за повтор, если такой имеется, искал!
Помимо
Спойлер
[свернуть]
Использовал RewriteRule ^(.*)/$ /$1 [R=301,L]
при входе в админку Joomla - На этой странице обнаружена циклическая переадресация
Ошибка 310 (net::ERR_TOO_MANY_REDIRECTS): Обнаружено слишком много переадресаций.
Не подскажете в чем может быть дело?
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Re: FAQ - редиректы в.htaccess
« Ответ #8 : 20.12.2012, 19:48:42 »
Т.е. использовать такой вход?
Я проверял ссылки на ответ сервера со слеш и без, в обоих случаях ответ 200
Но в Яндексе вроде дублей нет со слеш и без слеш!
Нужен ли мне вообще
RewriteRule ^(.*)/$ /$1 [R=301,L]
?
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Re: FAQ - редиректы в.htaccess
« Ответ #9 : 20.12.2012, 19:53:22 »
Я проверял ссылки на ответ сервера со слеш и без, в обоих случаях ответ 200
если у вас прописано
RewriteRule ^(.*)/$ /$1 [R=301,L]
то ответ сервера никак не может быть 200 в обоих случаях...
Т.е. использовать такой вход?
Но в Яндексе вроде дублей нет со слеш и без слеш!
Нужен ли мне вообще
нет
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Re: FAQ - редиректы в.htaccess
« Ответ #10 : 20.12.2012, 20:58:50 »
У одной и той-же ссылки со слеш и без, ответ 200 был до того как я прописал код RewriteRule ^(.*)/$ /$1 [R=301,L]
Поэтому я решил перестраховаться, но точно не уверен есть ли дубли со слеш, точнее не знаю как проверить. Вот
*

evgeniy256

  • Новичок
  • 1
  • 0 / 0
Re: FAQ - редиректы в.htaccess
« Ответ #11 : 21.12.2012, 23:15:55 »
Здравствуйте!
При добавлении нижеследующего редиректа (для переадресации site.ru/index.php на site.ru/) прекратила работать авторизация пользователей на сайте. То есть при вводе корректных пользователя и пароля происходит просто обновление страницы. В чем проблема?
Код
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ 
RewriteRule ^index\.php$ http://site.ru/ [R=301,L]
« Последнее редактирование: 21.12.2012, 23:43:11 от evgeniy256 »
*

StyleRocket

  • Давно я тут
  • 567
  • 4 / 3
Re: FAQ - редиректы в.htaccess
« Ответ #12 : 27.12.2012, 05:00:35 »
Elle, подскажи пожалуйста. Как определил один товар в две разные категории, начал появляться символ # в конце ссылки, не то чтобы в строке браузера, а внизу в том месте где отображается линк когда наводишь на ссылку.
Потом решил добавить этот символ #, страница открывается с символом в конце, это дубль? Откуда может взяться?
*

FuzzyLogic

  • Новичок
  • 10
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #13 : 09.01.2013, 09:01:45 »
Хочу сделать редирект с www на без www.
Вставил в .htaccess следующие строки:

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

Ввожу в адресной строке www.site.ru - перенаправляет на site.ru - Все работает как надо, НО
если ввожу в адресной строке www.site.ru/abc/ekf, то перенаправляет на site.ru/index.php
а надо естественно на site.ru/abc/ekf

Подскажите как сделать.
*

feniks81

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #14 : 09.01.2013, 15:13:46 »
FuzzyLogic  -  Помести код непосредственно после RewriteEngine On и измени код как я прописал

Спойлер
[свернуть]
Помогло?
« Последнее редактирование: 09.01.2013, 15:14:57 от ELLE »
*

feniks81

  • Осваиваюсь на форуме
  • 30
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #15 : 09.01.2013, 15:23:30 »
У меня другая ситуация. с site.ru/category/url.html нужно ставить редирект на site.ru/newcategory/url.html

Перепробовал разные варианты, ничего не происходит. Подскажите как решить.

Спойлер
[свернуть]

Спойлер
[свернуть]

Спойлер
[свернуть]

Спойлер
[свернуть]

Спойлер
[свернуть]


вроде все.. вроде тут использовать мозги на 2%, но безуспешно. надеюсь на вас, ребята  *DRINK*
*

FuzzyLogic

  • Новичок
  • 10
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #16 : 09.01.2013, 20:41:12 »
FuzzyLogic  -  Помести код непосредственно после RewriteEngine On и измени код как я прописал

Спойлер
[свернуть]
Помогло?
Сам уже догадался и сделал - помогло, но за ответ спасибо!
*

Sliapy

  • Захожу иногда
  • 318
  • 48 / 4
Re: FAQ - редиректы в htaccess
« Ответ #17 : 20.01.2013, 15:17:08 »
Можно ли как-то сделать редирект вида:

Перенаправлять http://site.ru/en/en/category/ на http://site.ru/en/category/ где category - переменная и может быть абсолютно любой?

Вот я валенок. Сорри, не увидел про вопросы :( Потрите сообщение.
*

site-optimizator

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #18 : 25.01.2013, 01:28:56 »
Пользуясь вышеприведёнными инструкциями, настроил свой  .htaccess
от index.php избавиться удалось, www я тоже победил, но этот гадский слеш...
Перепробовал все перечисленные варианты - безуспешно, одна и та же страница одинаково открывается и со слешем, и без него.
насколько это критично для Яндекс? Будет видеть дубли?
итоговый вариант такой:
Код
RewriteEngine On 
RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?)
RewriteRule .* %1/ [R=301,L]
RewriteCond %{HTTP_HOST} !^www\.
 RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
RewriteRule ^index.php/(.*)$ http://www.site.ru/$1 [R=permanent,L]
Чего там ещё надо включить? Имеет ли значение очерёдность строк?
ELLE, о мудрейшая, к Вам взывает мой вскипевший моск...

« Последнее редактирование: 25.01.2013, 01:36:59 от site-optimizator »
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Re: FAQ - редиректы в htaccess
« Ответ #19 : 25.01.2013, 01:41:49 »
Ну сделайте наоборот - без слеш, зачем вам этот слеш на конце? (тем более что в Joomla по умолчанию нет слеша)
Да и делать такой редирект совсем не обязательно.
*

site-optimizator

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #20 : 25.01.2013, 23:07:20 »
Ну сделайте наоборот - без слеш, зачем вам этот слеш на конце? (тем более что в Joomla по умолчанию нет слеша)
Да и делать такой редирект совсем не обязательно.
И так, и так уже сделал. И со слешем, и без. Все варианты перепробовал - безрезультатно.
Мне то фиолетово, а вот Яндекс может капризничать.
Кроме того, сейчас с ужасом обнаружил, что всплывают дубли типа http://www.mysite.ru/page и http://www.mysite.ru/page/index.php
« Последнее редактирование: 25.01.2013, 23:12:57 от site-optimizator »
*

Rex_One

  • Захожу иногда
  • 458
  • 37 / 0
Re: FAQ - редиректы в htaccess
« Ответ #21 : 26.01.2013, 00:17:15 »
Вот такой у меня и все пашет, попробуйте. Только замените где написано site.ru на свое

Спойлер
[свернуть]
Кривизна рук не компенсирует прямизну извилин.
*

site-optimizator

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #22 : 27.01.2013, 22:56:34 »
Вот такой у меня и все пашет, попробуйте.
Спасибо, но не подошло - вообще все дубли открылись.
Походу, обработка  .htaccess зависит от от веб-сервера.
*

sasna

  • Новичок
  • 5
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #23 : 30.01.2013, 11:19:17 »
Здравствуйте, помогите пожалуйста чайнику решить следующую проблему:

Например на сайте материал такого вида:
название материала - Gotham и Solomon - Star
ссылка материала - http://мой сайт/zarubezhnyye-klipy/rap-hip-hop/670-gotham-i-solomon-star.html

В индексе поисковиков стали появляться различные дубли этой страницы например:
http://мой сайт/zarubezhnyye-klipy/rap-hip-hop/670-gotham-i-solomon.html
http://мой сайт/zarubezhnyye-klipy/rap-hip-hop/670-gotham-i-solomo.html
http://мой сайт/zarubezhnyye-klipy/rap-hip-hop/670-gotham-i-sol.html
http://мой сайт/zarubezhnyye-klipy/rap-hip-hop/670-gotham-i.html

Подозреваю что конкуренты убрав часть ссылки добавляют ее аддурилку поисковиков тем самым делая дубли на мои материалы.
Подскажите пожалуйста как настроить редирект в htaccess что бы избавиться от этих дублей. 
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Re: FAQ - редиректы в htaccess
« Ответ #24 : 30.01.2013, 11:48:58 »
Здравствуйте, помогите пожалуйста чайнику решить следующую проблему:
Обращаюсь ко всем Чайникам - читаем FAQ, пользуемся поиском!
В этой теме только решения, никаких вопросов!

http://joomlaforum.ru/index.php/topic,201567.0.html
*

stahov

  • Новичок
  • 18
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #25 : 31.01.2013, 23:16:56 »
Редирект 301 со страниц без.html на страницы з.html
REDIRECTMATCH 301 (.*/[^/.]+)($|\?)$ http://mysite.ru$1.html
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
*

voland

  • Легенда
  • 10305
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
Re: FAQ - редиректы в htaccess
« Ответ #27 : 31.01.2013, 23:46:11 »
Может дополнить редиректами на www и с www - тут расписано
*

ChaosHead

  • Гуру
  • 5080
  • 440 / 13
Re: FAQ - редиректы в htaccess
« Ответ #28 : 02.02.2013, 21:21:31 »
Убрать index.php совет тот, что в шапке действует только для главной.
Можно убрать его из всех ссылок так:
Код
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

Блин,  я уже как Йода разговариваю :laugh:
« Последнее редактирование: 02.02.2013, 21:32:33 от ChaosHead »
*

ofry

  • Новичок
  • 12
  • 0 / 0
Re: FAQ - редиректы в htaccess
« Ответ #29 : 07.02.2013, 04:59:13 »
п. 3 несовместим с расширением AdminExile (т.е. ссылка /administrator?user=pass переводится в /administrator.html?user=pass, что не дает зайти в админку.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Исключения для редиректов в htaccess

Автор alex_photo

Ответов: 12
Просмотров: 8473
Последний ответ 19.10.2018, 10:42:39
от Vasiliy111
Админка Joomla не открывается после правки файла htaccess

Автор bayersoff

Ответов: 2
Просмотров: 287
Последний ответ 12.10.2018, 17:23:48
от ProtectYourSite
Как правильно прописать команды в файл htaccess: вопрос от новичка?

Автор Artemio

Ответов: 2
Просмотров: 401
Последний ответ 26.02.2018, 16:30:03
от Artemio
Как написать правило в.htaccess?

Автор Olg

Ответов: 0
Просмотров: 284
Последний ответ 02.02.2018, 21:53:29
от Olg
редиректы в htaccess

Автор leo78

Ответов: 9
Просмотров: 387
Последний ответ 17.11.2017, 15:03:18
от leo78