[РЕШЕНО] Фантомные дубли URL. Их вроде нет, но они есть.
[РЕШЕНО] Фантомные дубли URL. Их вроде нет, но они есть.
{ [РЕШЕНО] Код здесь: https://gist.github.com/keltstr/7515215 }
Проблема очень острая для проектов которые делают ставку на раскрутку через поисковики.
Маленькое исследование сайтов на Yii показало, что дубликаты URL (при добавлении в адрес имени скрипта index.php) присутствуют почти во всех проектах и лишь на нескольких обнаружено правильное поведение - отдача 404 ошибки.
Несколько примеров реакций сайтов при внедрении имени скрипта index.php в URL:
(сайты взяты из этой ветки форума viewforum.php?f=14)
######### Сайты у которых ДУБЛИКАТЫ в URL
http://rmcreative.ru/index.php/blog/tag/Yii
http://2gis.ru/index.php/#!/moscow/cent ... /1/ppage/1
http://rosyama.ru/index.php/page/about/
http://66.ru/index.php/news/main/
http://www.ps-box.ru/index.php/box/extreme/
http://vpodarok.ru/index.php/certificat
http://moskva.trud.com/index.php/jobs/proizvodstvo/
http://infit.ru/index.php/places/3.html
http://flisti.ru/index.php/latest
http://www.stay.com/index.php/new-york/restaurant/
http://myconfess.ru/index.php/category/20
http://www.29clubsports.com/index.php/about
http://crecer.ru/index.php/site/index.html
http://bmgame.org/index.php/users/login
######### Сайты которые ПРАВИЛЬНО отдают 404 ошибку
http://prostosite.me/index.php/about (но не все так гладко http://prostosite.me/index.php/feedback)
http://advizzer.com/index.php/project/about.html
http://www.holcim.com/index.php/about-us.html
http://www.astrazeneca.com/index.php/Investors
http://www.fifa.com/index.php/newscentre/index.html
http://billkill.ru/index.php/deals/dlya-biznesa
### Т.е. стандартные возможности не позволяют это контролировать.
После настройки .htaccess и urlManager - имя скрипта index.php в url отображаться перестало(createUrl) и выглядит как http://yii.ru/site/index - т.е. вроде бы все хорошо.
Но если в адресную строку написать не http://yii.ru/site/index , а http://yii.ru/index.php/site/index , то страница site/index отобразится в обычном режиме,
а это неправильно(для seo).
Нужно чтобы http://yii.ru/index.php/site/index отдавал ошибку http 404 Not Found ИЛИ перманентно редиректил(301) на http://yii.ru/site/index
Подскажите пожалуйста как вы решаете данную проблему (особенно интересует опыт тех сайтов из списка выше - например http://billkill.ru ).
Проблема очень острая для проектов которые делают ставку на раскрутку через поисковики.
Маленькое исследование сайтов на Yii показало, что дубликаты URL (при добавлении в адрес имени скрипта index.php) присутствуют почти во всех проектах и лишь на нескольких обнаружено правильное поведение - отдача 404 ошибки.
Несколько примеров реакций сайтов при внедрении имени скрипта index.php в URL:
(сайты взяты из этой ветки форума viewforum.php?f=14)
######### Сайты у которых ДУБЛИКАТЫ в URL
http://rmcreative.ru/index.php/blog/tag/Yii
http://2gis.ru/index.php/#!/moscow/cent ... /1/ppage/1
http://rosyama.ru/index.php/page/about/
http://66.ru/index.php/news/main/
http://www.ps-box.ru/index.php/box/extreme/
http://vpodarok.ru/index.php/certificat
http://moskva.trud.com/index.php/jobs/proizvodstvo/
http://infit.ru/index.php/places/3.html
http://flisti.ru/index.php/latest
http://www.stay.com/index.php/new-york/restaurant/
http://myconfess.ru/index.php/category/20
http://www.29clubsports.com/index.php/about
http://crecer.ru/index.php/site/index.html
http://bmgame.org/index.php/users/login
######### Сайты которые ПРАВИЛЬНО отдают 404 ошибку
http://prostosite.me/index.php/about (но не все так гладко http://prostosite.me/index.php/feedback)
http://advizzer.com/index.php/project/about.html
http://www.holcim.com/index.php/about-us.html
http://www.astrazeneca.com/index.php/Investors
http://www.fifa.com/index.php/newscentre/index.html
http://billkill.ru/index.php/deals/dlya-biznesa
### Т.е. стандартные возможности не позволяют это контролировать.
После настройки .htaccess и urlManager - имя скрипта index.php в url отображаться перестало(createUrl) и выглядит как http://yii.ru/site/index - т.е. вроде бы все хорошо.
Но если в адресную строку написать не http://yii.ru/site/index , а http://yii.ru/index.php/site/index , то страница site/index отобразится в обычном режиме,
а это неправильно(для seo).
Нужно чтобы http://yii.ru/index.php/site/index отдавал ошибку http 404 Not Found ИЛИ перманентно редиректил(301) на http://yii.ru/site/index
Подскажите пожалуйста как вы решаете данную проблему (особенно интересует опыт тех сайтов из списка выше - например http://billkill.ru ).
Последний раз редактировалось keltstr 2013.11.21, 05:38, всего редактировалось 6 раз.
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
Re: Убрать дубликаты URL - /index.php/site/index и /site/ind
В .htaccess нужно прописать 301 редирект на эту ссылку
Re: Убрать дубликаты URL - /index.php/site/index и /site/ind
В .htaccess:
В конфиг для urlManager:
Так же можно добавить:
чтобы не было дублей, но тогда необходимо чтобы были правила для текущих маршрутов на сайте.
Код: Выделить всё
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
Код: Выделить всё
'showScriptName' => false
Код: Выделить всё
'useStrictParsing' => true
Re: Убрать дубликаты URL - /index.php/site/index и /site/ind
покажите пожалуйста пример как сделать редирект с http://site.ru/index.php/c/a на http://site.ru/c/anoganno писал(а):В .htaccess нужно прописать 301 редирект на эту ссылку
желательно чтобы имя домена site.ru в явном виде прописывать не нужно было, а иcпользовалась подстановка %{}
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
Re: Убрать дубликаты URL - /index.php/site/index и /site/ind
Добавил useStrictParsing' => true, но не понимаю куда и какие правила для маршрутов нужно писать.ref писал(а): ...
Так же можно добавить:чтобы не было дублей, но тогда необходимо чтобы были правила для текущих маршрутов на сайте.Код: Выделить всё
'useStrictParsing' => true
Покажите пожалуйста пример для http://site.ru/ccc/aaa
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
Re: Острая проблема почти для всех yii проектов
Что лучше делать? у кого какие мнения по этому поводу?
1) отдавать 404 ошибку
2) перенаправлять на оригинал URLa (301 редирект)
1) отдавать 404 ошибку
2) перенаправлять на оригинал URLa (301 редирект)
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Острая проблема почти для всех yii проектов
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
Re: Острая проблема почти для всех yii проектов
Вопрос остается открытым.flashimage писал(а):http://hashcode.ru/questions/188381#188434
Спасибо за ссылку. Предложенным способом решение проблемы сводится к прописыванию в .htaccess всех вариантов ссылок:
...
RewriteRule ^index\.php/site/index.html$ /site/index.html [NC,R=301,L] - работает
...
Но например для проектов где вариантов ссылок много или они формируются динамически этот вариант не подходит.
Требуется решение которое будет универсальным - что-то вроде:
#должно находить в строке запроса '/index.php/controller/action?var=1' подстроку '/index.php' и переписывать запрос так '/controller/action?var=1'
RewriteRule ^index\.php(.*)$ $1 [NC,R=301,L] - но оно почему-то у меня не работает.
Кто способен исправить ошибку отпишитесь пожалуйста.
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
Re: Острая проблема почти для всех yii проектов
Нужно разбираться с исходниками....
- Beaten_Sect0r
- Сообщения: 234
- Зарегистрирован: 2011.06.15, 14:58
- Откуда: Ярославль
- Контактная информация:
Re: Острая проблема почти для всех yii проектов
keltstr писал(а): RewriteRule ^index\.php(.*)$ $1 [NC,R=301,L] - но оно почему-то у меня не работает.
Код: Выделить всё
# Otherwise forward it to index.php.
RewriteRule . index.php
RewriteCond %{THE_REQUEST} index.php
RewriteRule ^index.php/(.*) /$1 [R=301,L]
_https://coru.ws
Re: Острая проблема почти для всех yii проектов
я решил эту проблему по другому просто создал в контроллере функцию init() который убирает index.php и идет редирект на нормальный url. плюс, если нет слеша то редирект на url со слешем
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Острая проблема почти для всех yii проектов
Ну, можно и в init.
Нравится Yii? Давайте сделаем его лучше!.
Re: Острая проблема почти для всех yii проектов
Спасибо за решение, но вот более элегантное решение(на мой взгляд) - одна надстройка для всего проекта(не нужно в каждом контроллере указывать фильтр или править init()).Sam Dark писал(а):http://rmcreative.ru/blog/post/ubiraem- ... -url-v-yii
Все описание в комментариях в коде (нужно создать файл protected.components.UrlManager.php и в конфигурации(protected/config/main.php указать настройки)
Код здесь: https://gist.github.com/keltstr/7515215
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
Re: Острая проблема почти для всех yii проектов
В robots.txt «Disallow: /index.php», и вопрос с дублями решён за 2 секунды.
Re: Острая проблема почти для всех yii проектов
Как вариант - ДА, нО это хорошо, до тех пор пока вы в проект не вкладываете свои личные деньги или не отвечаете за него своей головой ))ref писал(а):В robots.txt «Disallow: /index.php», и вопрос с дублями решён за 2 секунды.
Имею ввиду что это лишь попытка указания некоторым спайдерам " не нужно этого делать", а вот "делать" или "не делать" это уже их собственное решение.
http://guide.yii2.org-info.by/ - руководство Yii2 по-русски, со сквозным сопоставлением ссылок на рус. и англ. темы.Русский поиск.Работает на телефонах.Обновляется.Предложени по доработке viewtopic.php?f=19&t=21391
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: [РЕШЕНО]Острая проблема почти для всех yii проектов
По крайней мере Google, Yandex, Bing, DuckDuckGo уважают robots.txt.
Нравится Yii? Давайте сделаем его лучше!.
Re: [РЕШЕНО]Острая проблема почти для всех yii проектов
Я бы вообще сделал:
и пусть теперь любые вводят.
Код: Выделить всё
ksort($_GET);
$url = Yii::app()->controller->createUrl('', $_GET);
if (Yii::app()->request->getUrl() != $url) {
Yii::app()->controller->redirect($url, true, 301);
}
Последний раз редактировалось ElisDN 2013.11.17, 22:08, всего редактировалось 2 раза.
Re: Острая проблема почти для всех yii проектов
Вы ошибаетесь в силу отсутствия знаний. Это самое надёжное решение. Закрытые в файле robots.txt разделы абсолютно точно не будут индексироваться поисковыми системами.keltstr писал(а):Как вариант - ДА, нО это хорошо, до тех пор пока вы в проект не вкладываете свои личные деньги или не отвечаете за него своей головой ))
Имею ввиду что это лишь попытка указания некоторым спайдерам " не нужно этого делать", а вот "делать" или "не делать" это уже их собственное решение.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: [РЕШЕНО]Острая проблема почти для всех yii проектов
Ну, не совсем так. 100% гарантии это не даёт. Какой-нибудь странный бот может туда и пойти...
Нравится Yii? Давайте сделаем его лучше!.