Страница 1 из 2

Дублирование страниц index.php/site/index

Добавлено: 2015.09.11, 09:23
evrej
Добрый день!

Как избавиться от дублирование? Одна страница доступна по следующим адресам
/index.php/site/login
/site/login
/login (прописал в конфиге что бы получить этот адрес)

Как сделать что бы первый и второй URL делали редирект 301 на третий или выдавали ошибку 404.

С /site/login сделал редирект на /login в .htaccess.
Но можно ли как то решить эти две задачи возможностями yii2?

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.11, 14:14
ElisDN
Прописать все правила и включить enableStrictParsing:

Код: Выделить всё

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'rules' => [
        '' => 'site/index',
        ...
    ],
] 
Или просто добавьте Url::canonical() в шаблоне.

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.13, 14:53
evrej
При таких настройках конфига страницы все равно доступны по /index.php/login и /login
А вот как бы избавиться от /index.php
Видел решение для yii1, там создали новый класс urlManager и в нем решили эту проблему.

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.13, 15:56
evrej
Решил проблему так:
Создал класс UrlManagerNoIndex extends UrlManager, в функцию parseRequest добавил

Код: Выделить всё

$script = substr($_SERVER['REQUEST_URI'], 0, 10);
     if ($script == '/index.php') {
          return false;
     } 
В конфиг добавил

Код: Выделить всё

'class' => 'app\lib\web\UrlManagerNoIndex'
Правильное это решение?

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.13, 17:29
zelenin

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.13, 21:13
evrej
Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дубли

Re: Дублирование страниц index.php/site/index

Добавлено: 2015.09.13, 21:15
zelenin
evrej писал(а):
Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дубли
а, я думал вам при генерации нужно убрать. евредж.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 16:44
andreyrud
Так кто-нибудь нашел окончательное решение для
''
'/'
'/site/index'
'/index.php/site/index'
?

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 17:03
Nerf
Зачем кому-то искать решение несуществующей проблемы?

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 18:04
zabachok
Я вам больше скажу, что можно сгенерировать сколь угодно дублей:
'/index.php/site/index?var=1'
'/index.php/site/index?var=2'
'/index.php/site/index?var=3'
'/index.php/site/index?var=4'
'/index.php/site/index?var=5'
'/index.php/site/index?var=6'
... и т. д.
Единственное решение здесь - это всегда генерировать только одну ссылку. Если у вас экшон site/index должен быть только по урлу / то такие ссылки везде и делайте. Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
ЗЫ
Nerf сказал верно, проблемы не существует. Говно не воняет, пока его не трогаешь, поэтому одной странице должна соответствовать только одна ссылка, не придумывайте ей других.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 18:35
andreyrud
zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
Это как? Что откроется в результате?

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 19:08
zabachok
andreyrud писал(а):
zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
Это как? Что откроется в результате?
Та страница на которую вы сделали редирект.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 19:08
ElisDN
Добавьте в layout/main.php:

Код: Выделить всё

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]); 

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.21, 22:43
andreyrud
ElisDN писал(а):Добавьте в layout/main.php:

Код: Выделить всё

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]); 
И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт. Нужно какое-то более кардинальное решение...

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 00:52
ElisDN
andreyrud писал(а):И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт.
Репрезентативные пруфы в студию. Доказательства вроде "мамой клянусь!" весомы только в более гуманитарных сообществах.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 02:51
andreyrud
ElisDN писал(а):
andreyrud писал(а):И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт.
Репрезентативные пруфы в студию. Доказательства вроде "мамой клянусь!" весомы только в более гуманитарных сообществах.
1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
2. Уже совсем недавно я создал тестовый поддомен, где вел разработку. Поддомен закрыт от поисковиков полностью через роботс.тхт, но имеет схожий контекст с основным доменом. ссылок на поддомен нигде не прописано. И яндекс и гугл залезли и проиндексировали тестовый поддомен и вывалили кучу дублей и ошибок. В результате основной домен просел в поиске. (Решается только через логин пароль или капчей)
3. Сделайте ссылку и закройте ее нофоллов. по ссылке допустите ошибку 404 с картинкой. Через некоторое время лицезрейте сообщение об отсутствии именно этой катринки в вебмастерах.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 02:56
ElisDN
andreyrud писал(а):Нужно какое-то более кардинальное решение...
Самое кардинальное - редирект на канонический адрес или ошибка 404. Но заказчик будет крайне "доволен", когда попробует рекламу с utm-метками давать.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 02:58
ElisDN
andreyrud писал(а):1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
Ну так добавьте canonical и дубли исчезнут.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 02:59
andreyrud
ElisDN писал(а):
andreyrud писал(а):1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
Ну так добавьте canonical и дубли исчезнут.
Уж год как. Дубли на месте.

Re: Дублирование страниц index.php/site/index

Добавлено: 2016.04.22, 03:03
andreyrud
ElisDN писал(а):
andreyrud писал(а):Нужно какое-то более кардинальное решение...
Самое кардинальное - редирект на канонический адрес или ошибка 404.
а редирект с /site/index на / не приведет к зацикливанию? И правильно ли будет если с / редиректить на /site/index?