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

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
evrej
Сообщения: 60
Зарегистрирован: 2014.12.19, 09:07

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

Сообщение evrej »

Добрый день!

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

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

С /site/login сделал редирект на /login в .htaccess.
Но можно ли как то решить эти две задачи возможностями yii2?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

Прописать все правила и включить enableStrictParsing:

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

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'rules' => [
        '' => 'site/index',
        ...
    ],
] 
Или просто добавьте Url::canonical() в шаблоне.
Аватара пользователя
evrej
Сообщения: 60
Зарегистрирован: 2014.12.19, 09:07

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

Сообщение evrej »

При таких настройках конфига страницы все равно доступны по /index.php/login и /login
А вот как бы избавиться от /index.php
Видел решение для yii1, там создали новый класс urlManager и в нем решили эту проблему.
Аватара пользователя
evrej
Сообщения: 60
Зарегистрирован: 2014.12.19, 09:07

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

Сообщение evrej »

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

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

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

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

'class' => 'app\lib\web\UrlManagerNoIndex'
Правильное это решение?
Аватара пользователя
evrej
Сообщения: 60
Зарегистрирован: 2014.12.19, 09:07

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

Сообщение evrej »

Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дубли
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

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

Сообщение zelenin »

evrej писал(а):
Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дубли
а, я думал вам при генерации нужно убрать. евредж.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

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

Сообщение andreyrud »

Так кто-нибудь нашел окончательное решение для
''
'/'
'/site/index'
'/index.php/site/index'
?
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

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

Сообщение Nerf »

Зачем кому-то искать решение несуществующей проблемы?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

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

Сообщение 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 сказал верно, проблемы не существует. Говно не воняет, пока его не трогаешь, поэтому одной странице должна соответствовать только одна ссылка, не придумывайте ей других.
2b||!2b Just read the instructions
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

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

Сообщение andreyrud »

zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
Это как? Что откроется в результате?
Аватара пользователя
zabachok
Сообщения: 522
Зарегистрирован: 2013.12.16, 14:38

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

Сообщение zabachok »

andreyrud писал(а):
zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
Это как? Что откроется в результате?
Та страница на которую вы сделали редирект.
2b||!2b Just read the instructions
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

Добавьте в layout/main.php:

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

$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]); 
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

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

Сообщение andreyrud »

ElisDN писал(а):Добавьте в layout/main.php:

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

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

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

Сообщение ElisDN »

andreyrud писал(а):И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт.
Репрезентативные пруфы в студию. Доказательства вроде "мамой клянусь!" весомы только в более гуманитарных сообществах.
Последний раз редактировалось ElisDN 2016.04.22, 02:56, всего редактировалось 3 раза.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

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

Сообщение andreyrud »

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

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

Сообщение ElisDN »

andreyrud писал(а):Нужно какое-то более кардинальное решение...
Самое кардинальное - редирект на канонический адрес или ошибка 404. Но заказчик будет крайне "доволен", когда попробует рекламу с utm-метками давать.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

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

Сообщение ElisDN »

andreyrud писал(а):1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
Ну так добавьте canonical и дубли исчезнут.
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

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

Сообщение andreyrud »

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

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

Сообщение andreyrud »

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