Дублирование страниц index.php/site/index
Дублирование страниц index.php/site/index
Добрый день!
Как избавиться от дублирование? Одна страница доступна по следующим адресам
/index.php/site/login
/site/login
/login (прописал в конфиге что бы получить этот адрес)
Как сделать что бы первый и второй URL делали редирект 301 на третий или выдавали ошибку 404.
С /site/login сделал редирект на /login в .htaccess.
Но можно ли как то решить эти две задачи возможностями yii2?
Как избавиться от дублирование? Одна страница доступна по следующим адресам
/index.php/site/login
/site/login
/login (прописал в конфиге что бы получить этот адрес)
Как сделать что бы первый и второй URL делали редирект 301 на третий или выдавали ошибку 404.
С /site/login сделал редирект на /login в .htaccess.
Но можно ли как то решить эти две задачи возможностями yii2?
Re: Дублирование страниц index.php/site/index
Прописать все правила и включить enableStrictParsing:
Или просто добавьте Url::canonical() в шаблоне.
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'rules' => [
'' => 'site/index',
...
],
]
Re: Дублирование страниц index.php/site/index
При таких настройках конфига страницы все равно доступны по /index.php/login и /login
А вот как бы избавиться от /index.php
Видел решение для yii1, там создали новый класс urlManager и в нем решили эту проблему.
А вот как бы избавиться от /index.php
Видел решение для yii1, там создали новый класс urlManager и в нем решили эту проблему.
Re: Дублирование страниц index.php/site/index
Решил проблему так:
Создал класс UrlManagerNoIndex extends UrlManager, в функцию parseRequest добавил
В конфиг добавил
Правильное это решение?
Создал класс 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
Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дублиzelenin писал(а):https://github.com/yiisoft/yii2/blob/ma ... r.php#L109
Re: Дублирование страниц index.php/site/index
а, я думал вам при генерации нужно убрать. евредж.evrej писал(а):Это же не решит проблему, все равно страница будет доступна по URL /index.php/login и /login - а это дублиzelenin писал(а):https://github.com/yiisoft/yii2/blob/ma ... r.php#L109
Re: Дублирование страниц index.php/site/index
Так кто-нибудь нашел окончательное решение для
''
'/'
'/site/index'
'/index.php/site/index'
?
''
'/'
'/site/index'
'/index.php/site/index'
?
Re: Дублирование страниц index.php/site/index
Зачем кому-то искать решение несуществующей проблемы?
Re: Дублирование страниц index.php/site/index
Я вам больше скажу, что можно сгенерировать сколь угодно дублей:
'/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 сказал верно, проблемы не существует. Говно не воняет, пока его не трогаешь, поэтому одной странице должна соответствовать только одна ссылка, не придумывайте ей других.
'/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
Re: Дублирование страниц index.php/site/index
Это как? Что откроется в результате?zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
Re: Дублирование страниц index.php/site/index
Та страница на которую вы сделали редирект.andreyrud писал(а):Это как? Что откроется в результате?zabachok писал(а):Если поисковик проиндексировал ссылку /site/index, то ставьте 301 редирект на главную.
2b||!2b Just read the instructions
Re: Дублирование страниц index.php/site/index
Добавьте в layout/main.php:
Код: Выделить всё
$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]);
Re: Дублирование страниц index.php/site/index
И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт. Нужно какое-то более кардинальное решение...ElisDN писал(а):Добавьте в layout/main.php:
Код: Выделить всё
$this->registerLinkTag(['rel' => 'canonical', 'href' => Url::canonical()]);
Re: Дублирование страниц index.php/site/index
Репрезентативные пруфы в студию. Доказательства вроде "мамой клянусь!" весомы только в более гуманитарных сообществах.andreyrud писал(а):И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт.
Последний раз редактировалось ElisDN 2016.04.22, 02:56, всего редактировалось 3 раза.
Re: Дублирование страниц index.php/site/index
1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.ElisDN писал(а):Репрезентативные пруфы в студию. Доказательства вроде "мамой клянусь!" весомы только в более гуманитарных сообществах.andreyrud писал(а):И будете наблюдать вечные дубли что в яндекс вебмастере что в гугле. Всем им давно плевать на каноникалы, нофлоловы и роботсы.тхт.
2. Уже совсем недавно я создал тестовый поддомен, где вел разработку. Поддомен закрыт от поисковиков полностью через роботс.тхт, но имеет схожий контекст с основным доменом. ссылок на поддомен нигде не прописано. И яндекс и гугл залезли и проиндексировали тестовый поддомен и вывалили кучу дублей и ошибок. В результате основной домен просел в поиске. (Решается только через логин пароль или капчей)
3. Сделайте ссылку и закройте ее нофоллов. по ссылке допустите ошибку 404 с картинкой. Через некоторое время лицезрейте сообщение об отсутствии именно этой катринки в вебмастерах.
Последний раз редактировалось andreyrud 2016.04.22, 02:58, всего редактировалось 2 раза.
Re: Дублирование страниц index.php/site/index
Самое кардинальное - редирект на канонический адрес или ошибка 404. Но заказчик будет крайне "доволен", когда попробует рекламу с utm-метками давать.andreyrud писал(а):Нужно какое-то более кардинальное решение...
Re: Дублирование страниц index.php/site/index
Ну так добавьте canonical и дубли исчезнут.andreyrud писал(а):1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
Re: Дублирование страниц index.php/site/index
Уж год как. Дубли на месте.ElisDN писал(а):Ну так добавьте canonical и дубли исчезнут.andreyrud писал(а):1. На Yii1 я в свое время допустил ошибку и яндекс с гуглом увидели index.php/site/index. Теперь дубли висят у обеих поисковиков и видны в их вебмастерах.
Re: Дублирование страниц index.php/site/index
а редирект с /site/index на / не приведет к зацикливанию? И правильно ли будет если с / редиректить на /site/index?ElisDN писал(а):Самое кардинальное - редирект на канонический адрес или ошибка 404.andreyrud писал(а):Нужно какое-то более кардинальное решение...