WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Раскрутка сайта, поисковики и... mod_rewrite


Прислал: Roman Dukhanin [ 31.03.2003 @ 10:39 ]
Раздел:: [ Веб-технологии ]


Угу. Всем привет! Для кого предназначена эта статья - для веб разработчиков, для которых реально, что вся раскрутка сайта, которая ему (сайту) нужна, заключается в достижение высших позиций в наиболее популярных поисковых машинах по интересующим ключевым словам, ну и для остальных работников рекламы в интернете (для общего развития, так сказать :-)

ОК. Сразу к делу - как известно, не все еще люди научились пользоваться правильными поисковыми машинами типа Google или Yandex, многие (видать, по-старинке) продолжают использовать для поиска в Интернете поисковики НЕправильные. В чем различие между правильным и НЕправильным поисковиком? Навскидку, оных различий много, но одно из основных - это то, что НЕправильные поисковые машины НЕ индексируют сайты c динамическим содержимым . Мы здесь не будем показывать пальцем, но таких поисковиков достаточно много (например тот, который на "Ра" начинается и на "мблер" заканчивается).

И вот допустим, что вы решили создать и раскрутить сайт (реклама в интернете - великая вещь ;-) Да вот незадача - вы хотите иметь на оном сайте и гостевую книгу, и каталог товаров, и... И для этого сайт должен быть динамическим. И адреса у вас в оном каталоге будут типа ...?tovar=good&indexed=false - так что вышеупомянутый "мблер" оставит ваш сайт за бортом :-( Конечно, вы можете сказать - "Да мы раскрутим сайт и безо всякого там Рамблера! Да нам на Ра..." - расскажу вам историю двухнедельной давности:

Прихожу я в одну контору (мы вели переговоры отн. создания трех сайтов). Ну сидим мы общаемся. Вопрос заказчика:

  • А вы сможете вывести нас в первую десятку сайтов, выдаваемых Рамблером по ключевому слову "......"
  • Ну да, конечно, хотя я предпочитаю использовать Гугль, когда ищу по вашей тематике.
  • ??? А что такое Гугль???
Вот так-то! А вы говорите Яндекс :)

Можно, конечно (ежели уж совсем серьезно подойти к рекламе в интернете - а как иначе? :) делать отдельный сайт для каждого отдельного поисковика (и в общем-то это правильно), но тогда вам понадобится создать и раскрутить не один, как минимум 3-5 сайтов, что весьма и весьма трудоемко.

В общем, я расскажу вам об основах того, как сделать, чтобы ваш динамический сайт индексировался Рамблером и другими подобными скриптоненавистническими поисковыми системами. Данная технология используется на моем новом сайте (внимание, рекламная пауза ;-) Реклама в интернете создание и раскрутка сайта

Во первых давайте посмотрим вот на что: каким именно образом робот понимает, что ваш сайт имеет динамическую структуру? Правильно - он смотрит параметр 'href' тэга 'A' и если в оном есть знаки ? или & и если робот НЕправильный, то страницу по данному адресу он индексировать не будет. Таким образом, задача заключается в том, чтобы убрать из строки урла вышеупомянутые символы. А как же тогда передавать параметры скрипту? Как...

Далее по пунктам (ежели что непонятно будет пишите лично - разберемся). Все повествование будет вестись на основе реальной разработки, и на выходе мы получим маленький жизнеспособный скрипт, поняв принципы работы которого, вы сможете написать большой и глючный интернет-магазин ;-)

  1. Давайте сразу четко сформулируем задачу: нам нужно каким-то образом вызвать некий скрипт и передать ему некие параметры, при этом адресная строка должна выглядеть как для нормального, статического сайта. Это просто, если мы передаем скрипту данные из формы - ставим "POST" и все дела. Но мы то с вами должны передать параметры из гиперссылки, то есть через URL, то есть методом GET, то есть в УРЛе будут ? или &, то есть...
    ОК. Есть такой файл, называется .htaccess - в нем вы можете задать некотрые директивы, управляющие сервером Apache (сложно писать для "широкой" аудитории - кто-то сейчас читает и думает про себя - чего он тут нам "азбуку жует", а кто-то прочитал предыдущую фразу, и материт меня за "тарабарщину всякую"). Ну и ладно. В общем знать об этом самом .htaccess нужно примерно следующее - разместив оный файл в какой-либо папке на сервере, и написав в нем всякие штуки, мы можем изменить поведение сервера, применительно к данной папке (если, конечно хост провайдер разрешает). Короче:

    Помещаем файл с именем .htaccess в корневую папку свего сайта (DocumentRoot) - обычно она называется WWW или www
    И пишем в него следующие строки:
    RewriteEngine on
    RewriteRule ^core.php$ - [L]
    RewriteRule .* /core.php
    О чем это я? Аааа... ну да - есть такой модуль Apache - mod_rewrite называется. Описание данного модуля, как это обычно говорится, выходит за рамки данной статьи - суть в том, что mod_rewrite делает с путями на сервере, что душе угодно и использует синтаксис регулярных выражений в стиле Perl - интересующиеся могут порыться в интернете в поисках документации к оному. И все же, что мы там понаписали в .htaccess
    RewriteEngine on
    # Данной директивой .htaccess мы включаем mod_rewrite
    RewriteRule ^core.php$ - [L]
    # Даем понять серверу, что если запрошен файл с именем core.php (название может быть произвольным) то с оным файлом нужно поступить так, как обычно сервер поступает с предателями... простите с файлами, имеющими расширение .php - передать на обработку дальше (модулю PHP).
    RewriteRule .* /core.php
    # Внимание! Здесь происходит то, ради чего мы и городим весь огород - теперь, что бы мы не написали в адресной строке - не имеет (пока не имеет) ни какого значения - в любом случае будет вызван скрипт с именем core.php Но! Но в адресной строке набранный адрес остается прежним, то есть переменная окружения REQUEST_URI если набрано, например www.somehost.org/123 будет равна именно этому самому 123 и...

  2. И мы можем запросто разобрать эту строку в core.php, таким образом, мы передаем данные прямо в имени файла!!!
    Пишем тестовый скрипт и сохраняем как core.php :
    function parse($uri){
    if($uri){
    // вырезаем цифровые значения из строковой переменной $uri в массив $uri_number
    eregi("[[:digit:]]+",$uri,$uri_number);
    //выводим первый элемент массива в браузер
    echo $uri_number[0];
    }
    }
    // вызываем функцию с глобальной переменной $REQUEST_URI в качестве параметра
    parse($REQUEST_URI);
    
  3. Теперь набираем в строке браузера что-нибудь типа //имя_вашего_хоста/vasia12345.html Уррра!!! Получилось! (у меня все работает по крайней мере :-) Заметьте, что мы вызвали несуществующий файл vasia12345.html - сервер вернул нам OK (т.е. файл найден) - и вывел в браузер цифры 12345. Оные же цифры и буквы (для тех кто в танке ;-) можно передавать в качестве параметров в функции, внутри скрипта и пр.
    Рамблер доволен, мы довольны, все довольны! :-))
В заключение, хочу отметить, что описанный метод, далеко не единственный - я знаю по меньшей мере еще три способа избавиться от прелестей метода GET. Но данный путь, на мой взгляд самый гибкий и удобный.

Всего! Духанин Роман (aka RWinner)
Реклама в интернете создание и раскрутка сайта статьи аналитика



 :::::  D-Free пишет 05.04.2003 @ 06:29 
Ремблер прекрасно индексит +?+ Как, впрочем, и другие поисковики. Пару лет назад это было актуально, сейчас нет.
 :::::  NAS пишет 06.04.2003 @ 23:12 
D-Free а точно индексит ? Примерсик можно. Да и апорт тоже не индексирует такие страницы.
 :::::  gLip пишет 07.04.2003 @ 13:13 
по поводу индексации страниц , где есть передача параметров... только яндекс более - менее справляется с этим... гугл тоже, но страниц он меньше пориндексировал... а про рамблер я и не говорю, для того, чтобы он нормальные (правда нормальные phtml) страницы пориндексировал полгода должно пройти.. а уж с "?" и с "&" вообще говорить не приходится....

 :::::  Духанин Роман (aka RWinner) пишет 07.04.2003 @ 14:09 
Официально при регистрации в Рамблере - они заявляют, что амперсанды и пр. не индексируют, неофициально индексируют, но не всё. В любом случае изначально Инет планировался как HTML - эти атавизмы есть и сегодня и не только в поисковиках. Например "качалки сайтов" тоже не все берут динамические сайты.
Короче по-любому иметь формат УРЛов без "?" и "&" - это однозначный рулез. Другое дело, что это требует некоторого напряга, а это уж каждый сам оценивает - надо это или не надо.

Всего!
 :::::  bird пишет 24.04.2003 @ 12:34 
////////////////////////////////////////////////
/// RewriteRule .* /core.php
////////////////////////////////////////////////
Ага ...
И все картинки на на рассматриваемом сайте моментом отрубятся, потому как любой URL проходит через core.php

 :::::  RnBvi пишет 24.04.2003 @ 16:57 
Хех :)
 :::::  Духанин Роман (aka RWinner) пишет 24.04.2003 @ 22:11 
/***************************
И все картинки на на рассматриваемом сайте моментом отрубятся, потому как любой URL проходит через core.php
***************************/

А пути прописать относительно php-файла не судьба что-ли? Или абсолютные...
Чава
 :::::  bird пишет 25.04.2003 @ 13:51 
а какая ему разница (mod_rewrite) относительные это пути или абсолютные?
:-)
 :::::  elze creative studio пишет 27.04.2003 @ 03:40 
<blockquote>>Официально при регистрации в Рамблере - они заявляют, что амперсанды и пр. не индексируют, неофициально индексируют, но не всё.</blockquote>
---
наоборот. официально Рамблер заявил почти пол-года назад, что начал регистрировать динамику, хотя некоторые вещи не индексирует.
 :::::  balin пишет 12.05.2003 @ 13:28 
1. более простое решение и бытрее работает:

RewriteEngine on
RewriteRule \.html$ /index.php?$1 [NE]

2. по поводу посиковиков, дествительно проблема отпала, а проблема удобста пользователя остайтеся... куда приятней видеть
/about/index.html, вместо index.php?page=about&sub_page=index
 :::::  Likemam пишет 11.06.2003 @ 05:20 
Могу сказать, чо рамблер не индексирует страницы типа *.php?var=значение бесполезно ! Также как и Апорт. Но по статистике приход на сайт для примера :
Yandex - 270
Rambler-12
Aport-7

Так что ! Стоит сделать вывод и не городить чепуху. А для того, чтобы оказатся на верхушке рейтингоа, достаточно правильно сформировать index.php, причем если она деже формируется динамически, индексируется как надо.

 :::::  Oleg Marchuk пишет 11.06.2003 @ 12:22 
Было интересно прочитать про другие способы изменения URI
 :::::  SID пишет 14.06.2003 @ 20:07 
Я могу вас уверить на 100%, что Rambler индексирует страницы типа http://sid.com.ru/?FILE=design2&nav=1 . Пример тому, мой сайт, у меня сделана хорошая система статистики..... короче поверьте мне наслово!
А вот Апорт не индексирует, это точно...

// For Likemam
Лично у меня приход на сайт(примернл):
Yandex - 46%
Rambler-54%
Aport-0%

Так что не обобщай...
 :::::  balin пишет 15.06.2003 @ 14:25 
Если сайт частично динамичный, очень здорово использовать такой вариант:

RewriteEngine on
#проверка существоания файла:
RewriteCond %{REQUEST_FILENAME} !-f
#проверка существования директории
RewriteCond %{REQUEST_FILENAME} !-d
#если не то не другое не сработало, передается к скрипту
RewriteRule ^(.*)$ index.php?$1 [QSA,L]

 :::::  webpr пишет 15.07.2003 @ 13:27 
а можно итак стили и картинки вклюсть

RewriteEngine on
RewriteCond %{REQUEST_URI} !(css|js|jpg|jpeg|gif|swf)$
RewriteRule ^/(.*) /index.php?mod=$1
 :::::  ROMAR пишет 20.07.2003 @ 17:35 
А если сайт полностью на флэше???? Как ты его проиндексируешь???? Именно российские поисковики-заметьте-ВСЕ!!!!!!!!!!!!!!-ни один не индексируют флэш-эти пауки не могут...жалко
 :::::  Духанин Роман (aka RWinner) пишет 20.07.2003 @ 21:03 
ИМХО:
1. Делать две версии сайта - один флэшовый, другой простой (так обычно и делают).
2. Смешать флэш и хтмл - как правило в использовании флэшовых текстовых полей смысла мало.
3. Сам придумал года полтора назад, решая подобную проблему - жаба-скриптом делаешь два слоя - на переднем плане флэша, на заднем текст в хтмл для индексирования. Хотя это конечно изврат. Второй способ самый лучший. См. http://www.goldkey.ru/ - пример кастрированного XOOPS + Flash (флэша правда не слишком навороченная - ну на сколько заплатили - на столько и сделал ;)
З.Ы. к mod_rewrite это не имеет никакого отношения - офф-топик голимый :)
RWinner



 :::::  Zemnon пишет 25.07.2003 @ 13:57 
Всем привет.

У меня такая проблема:
Сделал всё, как было написано выше и модуль mod_rewrite у меня включен, но когда создал .htaccess то ничего не меняется, оно дальше отображает при обращении к http://localhost/index.html:
"Not Found
The requested URL /index.html was not found on this server."

В чём может быть загвоздка. Помогите плз.

 :::::  RWinner пишет 25.07.2003 @ 14:15 
А в error-log-е чего пишет? Думаю, если туда заглянешь - многое прояснится ;)

RWinner.

http://ru.neobrand.ru/
 :::::  hav пишет 20.11.2003 @ 18:46 
А у меня почему-то не работает так как описано выше. Перекидывает на страницу 404
 :::::  hav пишет 20.11.2003 @ 18:53 
А.. нет. заработало. Спасиба!
 :::::  Костя пишет 31.01.2004 @ 16:12 
Поломал я свой сайт, постирал всякие ?= но теперь нет контента и все циклится. Я использую parser, поэтому Ваш пример на php мне не подходит. А вообще пойдите на мой сайт, там кроме доменного имени вообще ничего не отображается. Фрейм-технология, блин. -)
 :::::  HoRRoR пишет 13.03.2004 @ 11:41 
Хм. а у меня дома не работает, может мне чего в php.ini поменять надо, или же скачать какой-нить модуль, помогите.
 :::::  Ivan пишет 30.03.2004 @ 18:52 
Да ребята и мне помогите плиз
на хостинге все работает а дома нет
был не подключен модуль mod_rewrite
затем я его подключил

Сервак начинает ругаться типа опции FollowSymLink и RewriteEngine on не совместимы между собой
в чем дело?
 :::::  Terrible Brooder пишет 24.04.2004 @ 02:06 
To Костя
Чё-то слишком тяжелый сайт у тебя. Нельзя такие сайты делать.

А у меня дома всё заработло. Значит сервак всё-таки ставить научился.
 :::::  banditx пишет 15.05.2004 @ 17:54 
Добрый день, если он конечно добрый!

уже неделю мучуюсь и все испробывал, но не получается хоть убейте!
Помогите или скажите как четко все надо сделать!

Есть сайт www.versal.ru у него страницы создаются на основе шаблонов.
Так вот хочется чтобы все эти значки ?, & , = в URL страницах исчезли и ответ сервера на URL был как обычная .html или .php страница.

Сейчас все страницы там генерятся типа www.versal.ru/index.php?an=models, так вот хочется, чтобы после /index.php не было всего этого бреда, а была человеческая ссылка.

Помогите все красиво сделать, очень хочется!Спасибо.
 :::::  Aleksey пишет 27.08.2004 @ 20:57 
Подскажите пожалуйста ф-ю на Перле аналог header("Location:reg.php,id=42");
Чтобы вызванная страница не появлялась в строке адреса, а являлась как бы той страницей, которая вызвала эту ф-ю
 :::::  Ubnormal пишет 04.11.2004 @ 01:29 
Господа http://ifun.ru - порой до 40% дневного трафика идёт с рамблера, как вы наверное поняли сайт целиком и полностью динамический.
 :::::  Сергей пишет 08.01.2005 @ 21:35 
http://www.vistlan.ru - не индексирует динамические ссылки Апорт, а так сделать у меня тоже не получилось :(.
 :::::  Eugene пишет 09.01.2005 @ 16:09 
Aleksey, в перле нет спец функции для отправки заголовков.

print "Content-type: text/html\n";
print "Location: ......etc....\n\n";

\n\n - отделяет заголовок от содержания. См. RFC.
 :::::  Nexus пишет 02.08.2006 @ 14:05 
Вообще именно для удобства пользователей часто бывает нужно хранить параметры в урле. Пример - id товара или новости, если нужно сохранить себе линк именно на этот товар, а в урле нет параметров это как-то проблематично будет сделать ;)
 :::::  RWinner пишет 03.08.2006 @ 18:51 
Nexus, тебе ничто не мешает парсить УРЛ как тебе угодно и в обе стороны - это даже нивапрос - просто применяешь регулярные выражения и фсьо.

http://www.2winners.com/
 :::::  D пишет 02.11.2006 @ 12:43 
помогите плиз
в .htaccess пишу

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{ENV:REDIRECT_MYFLAG} ^$
RewriteCond %{HTTP_HOST} ^\.site\.ru$
RewriteRule ^\.site\.ru(.*) /a%{REQUEST_URI}[L]

мне сказали что этот пример перенаправит все мои домены 3 уровня в папку А

мало того, что это не работает, так ещё мне надо другое - мне надо в корне в файл index.php
принимать значения этих самых доменов 3 уровня

т.е.
d.site.ru должен переводиться в site.ru/index.php?id=d
d1.site.ru должен переводиться в site.ru/index.php?id=d1
e.site.ru должен переводиться в site.ru/index.php?id=e
и т.д. юзеров очень много

плиззз
Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0182920