Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SEO + .htaccess + index.php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: SEO оптимизация
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 22:32:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Задался я тут целью оптимизировать свою систему под SEO.

1) В браузерах юзверей в 99% установлен какой-нибудь мейл-спутник, яндекс-бар и прочая снедь. Эта "снедь" отправляет информацию о посещенных ссылках прямиком к хозяевам "снеди", собственно к поисковикам.

2) Поисковики индексируют ссылки сайтов полностью как строку ^(.+)$

3) Например ваша единая точка входа (index.php) хватает все, что ей бросил апач, если не нашел реальный файл по запрашиваемому пути. Далее собственно роутер, обработка, вывод.. Вот стандартный реврайт:
CODE (text):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteBase /
  3. RewriteCond %{REQUEST_FILENAME} !-f
  4. RewriteRule ^(.*)$ index.php?$1 [QSA]

Что мы имеем?
Как правило параметры передаются в следующем формате:
/controller/action?param=value
Внутри экшна контроллер получает значения нужных ему GET-параметров, и отрабатывает свою часть контента.
Отлично.

Теперь представьте себе ситуацию, когда некий "злоумышленник", конкурент или кто-то еще, с установленным в браузере каким-нибудь "спутником-баром" начинает отправлять на ваш сайт запросы вида:
/controller/action?param=value
/controller/action?param=value&a=20
/controller/action?param=value&xxx=zzz
/controller/action?param=value&sss=3&a=test
Что делает ваш сайт?
Точно! Отдает один и тот же контент по разным URL, не так ли? Закатив глазки
Тогда - прощай мои позиции в поисковике, который ломанется на эти "левые" ссылки.
Я не стану тут описывать методы решения этой проблемы, она решаема у каждого по своему, главное, что на стороне логики вашего приложения.

Теперь есть еще одна задача - реальные файлы, статические страницы.
Например contacts.html, с ним же та же проблема - можно слать любые параметры.
Что делать в такой ситуации?
Поможет .htaccess:
CODE (text):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteBase /
  3. RewriteCond %{QUERY_STRING} ^.+ [OR]
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ index.php?$1 [QSA]

Опишу построчно что тут происходит:
1) вкл реврайта
2) указали где работаем
3) условие, если часть запроса после "?" не пуста ИЛИ
4) если по запрашиваемой строке ДО "?" нет такого файла
5) перенаправить все на index.php

Тут правда есть одна проблема, но она всплыла на уровне работы сервера.
Сам знак вопроса, как разделитель левой и правой части запроса, в условиях участвовать не может. Т.е. запрос вида /a?b=c может быть обработан как explode("?", $request) с потерей разделителя.
Тогда единственный адрес, который может пройти в качестве "левого" будет выглядить как /contacts.html?.
Из апача, я не смог вычленить этот злополучный знак вопроса.
Впереди nginx - посмотрим как он поведет себя в такой настройке.

Проверю - обязательно отпишу.
 
 Top
LIME
Отправлено: 12 Декабря, 2012 - 22:43:05
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




устаревшее представление работы поисковиков
они давно забивают на дубли выше определенного уровня вложения
а вот на дубль ниже уровнем реагируют
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 22:46:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LIME пишет:
они давно забивают на дубли выше определенного уровня вложения
Где можно увидеть официальную информацию от каждого из поисковиков, что это именно так?
Лучше уж я соломку подстелю.

Кроме того, я тут не про уровни вложений /a/b/c/d/e/f
а про GET-параметры
 
 Top
LIME
Отправлено: 12 Декабря, 2012 - 22:49:23
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ты видел официальные версии по SEO?
знающие люди сказали)
(Добавление)
гет..... однохерственно
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 22:53:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LIME пишет:
ты видел официальные версии по SEO?
знающие люди сказали)

Вилами на воде.

К тому же интересно, как тогда поисковики, по мнению "знающих людей" индексируют этот форум, в котором нет ЧПУ, а есть только GET-параметры, если поисковикам "всеравно" на наличие/отсутствие и значения этих параметров, м?
 
 Top
KingStar
Отправлено: 12 Декабря, 2012 - 23:08:06
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




LIME пишет:
они давно забивают на дубли выше определенного уровня вложения
а вот на дубль ниже уровнем реагируют


интересно, относительно какого уровня оно считает, как не крути - реагируют


-----
То что программа работает, не означает что она написана правильно!
 
 Top
LIME
Отправлено: 12 Декабря, 2012 - 23:09:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




кто говорил что всеравно?
но если при некотором наборе параметров и разными другими параметрами отдаются дубли то это пох
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 23:12:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




LIME пишет:
при некотором наборе параметров и разными другими параметрами
Какими именно? В каком порядке следования?
 
 Top
LIME
Отправлено: 12 Декабря, 2012 - 23:19:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




толи я туплю толи одно из двух
подумайте на досуге
 
 Top
KingStar
Отправлено: 12 Декабря, 2012 - 23:29:56
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




кстате, раз уж зашла решь, как роботы реагируют на index-ные контроллеры и экшны, если они могут быть в запросе, а могут не быть ???

например site.ru/index/index или site.ru/user/index

тоже самое что site.ru/ и site.ru/user соответственно


-----
То что программа работает, не означает что она написана правильно!
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 23:32:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




KingStar пишет:
например site.ru/index/index или site.ru/user/index

тоже самое что site.ru/ и site.ru/user соответственно
И это есть - плохо.
Нужно убирать этот артефакт, либо всегда выдавая index либо всегда убирая.
Я убираю. Просто вот так (нативный код):
PHP:
скопировать код в буфер обмена
  1. if ($action =="index") {
  2.   show404();
  3. }
  4.  
  5. if ($action === null) {
  6.   $action = "index";
  7. }
 
 Top
KingStar
Отправлено: 12 Декабря, 2012 - 23:34:46
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




если так - то плохо Хм
(Добавление)
некрасивые получаются урлы


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Champion Супермодератор
Отправлено: 13 Декабря, 2012 - 08:34:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




DeepVarvar, есть такая штука как <meta name="URL" content="http://www.site.ru/realPageUrl?with=required&deferent=parameters..." />
Если на дублях страниц он будет, то писковики поймут, какая страница - оригинал.
Только вот вопрос, как сфомировать этот урл - для этого надо быть в курсе во всех экшнах, какие они могут принимать гет-параемтры и, например, для meta name="URL" генерить урл, в котором все возможные гет параметры слева направо в алфавитном порядке со совими значениями. Но это может превратиться во что-то сильно ужасное.

Можно иметь в контроллерах карту экшнов, какие они параметры принимают, и в init контроллера генерить этот meta name="URL" , но нужно тогда внимательно поддерживать эту карту.

Можно перечисмлисть в robots.txt в clean-param все бестолковые геты, но их приблизительно бесконечное число.

Можно забить Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Декабря, 2012 - 09:48:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Champion пишет:
Можно иметь в контроллерах карту экшнов, какие они параметры принимают
Все намного проще, вариант 1:
1) разбираем URL, $q = explode("?",$x), $cp = explode("/", $q[0]), $gp = explode("&", $q[1])
2) берем по чуть array_shift($cp) подключая нужный контроллер, экшн
3) берем нужные в экшне параметры из $gp, если брали $gp['id'], unset($gp['id']), и так на каждый забираемый экшном параметр
4) если что-то осталось в $cp или в $gp - кричим что нам подсунули гадость (404).

Все намного проще, вариант 2 (улучшение):
Все то же самое, только движения происходят не с работой контроллеров с экшнами, а с тестированием конфига route.ini, например.
 
 Top
Champion Супермодератор
Отправлено: 13 Декабря, 2012 - 11:03:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




DeepVarvar пишет:
3) берем нужные в экшне параметры из $gp, если брали $gp['id'], unset($gp['id']), и так на каждый забираемый экшном параметр
Ну я не очень представляю, как можно предусмотреть, какие реально у нас "все нужные параемтры", потому что иногда нужных параметров может быть побольше, чем там id или page, и они могут меняться. Это всё-таки где-то должно быть описано?

По поводу 404, мне кажется, это немного жесткая мера. Если ты забудешь о каком-нибудь параметре, то будешь отдавать 404 на вполне нормальную страницу. Но, с другой стороны, 404 быстро себя обнаружит)

Плюс, разные счетчики, яндексдиректы и прочие погут цеплять к урлу свои финтифлюшки, типа utm_source и пр. На них тоже не надо отдавать 404, но они и не должны делать дублей. Поэтому, по-моему, meta url + clean-param - необходимая мера, а как определять список допустимых гет-параметров - отдельное дело.

PS, на сякий случай.
Я же правильно понял, что вопрос в том, как бороться с появляением
http://mysite[dot]ru/page?get1
http://mysite[dot]ru/page?get2
http://mysite[dot]ru/page?getMnogomnogo&moreGet
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB