Большой Воронежский Форум
Веб-программирование>запрос вида www.site.ru/p111
A-Maverick 21:51 09.12.2008
Интересует, как на многих сайтах организуется обработка урл-ов вида w ww.site.ru/p111 ?
(Например на ВКонтакте, где /id12345) и прочее?
Что для этого вообще нужно? Какие технологии должны присутствовать на хостинге и какие скрипты нужно писать? [Ответ]
alemiks 22:13 09.12.2008

Сообщение от A-Maverick:
Интересует, как на многих сайтах организуется обработка урл-ов вида w ww.site.ru/p111 ?
(Например на ВКонтакте, где /id12345) и прочее?
Что для этого вообще нужно? Какие технологии должны присутствовать на хостинге и какие скрипты нужно писать?

на чём вы собираетесь программить?
для сайта из двух-трёх страниц достаточно создать папку id12345 и в неё положить index.html =)
если программирование будет на php, perl, то, скорее всего, сервер на хостинге будет apache, для него есть модуль url-преобразований (поищите в гугле по запросу mod_rewrite)
для classic asp и .net сервер будет iis, тогда для iis 7.0 есть родной модуль, для ранних версий неплохой модуль isapi_rewrite
далее возможны 2 варианта:
— все запросы перенаправляются к одному файлу, тогда получаем строку запроса, разбираем её и выводим нужную инфу
— запросы превращаются в get-запросы с параметрами к разным файлам, тогда обрабатываем get-запрос как обычно [Ответ]
A-Maverick 22:16 09.12.2008
Да, не оговорил условия.
Работать всё должно на связке Apache + PHP4.
Создать папки уже была мысль, но тогда при заходе на фтп глаза будут лезть на лоб (динамика развития сайта дойдёт до 10000 ссылок, в которых каждая должна ссылаться на свою страницу) [Ответ]
A-Maverick 22:18 09.12.2008

Сообщение от alemiks:
— все запросы перенаправляются к одному файлу, тогда получаем строку запроса, разбираем её и выводим нужную инфу
— запросы превращаются в get-запросы с параметрами к разным файлам, тогда обрабатываем get-запрос как обычно

С первым вариантом более-менее понятно... подменить страницу, выводящуюся при 404-й ошибке...

А вот второй вариант более интересен. Можно по-подробнее, как именно можно перевести подобный урл в гет-запрос? [Ответ]
alemiks 22:24 09.12.2008

Сообщение от A-Maverick:
С первым вариантом более-менее понятно... подменить страницу, выводящуюся при 404-й ошибке...

нет, это прошлый век. запросы направляются с помощью mod_rewrite к файлу index.php, например

Сообщение от A-Maverick:
А вот второй вариант более интересен. Можно по-подробнее, как именно можно перевести подобный урл в гет-запрос?

как раз первый вариант интереснее, так как второй обычно применяют, когда нужно из готового сайта со страшными урлами превратить в сайт с чпу, не переписывая скрипты [Ответ]
A-Maverick 23:07 09.12.2008
Ладно, покурю эту тему. Спасибо за наставление :] [Ответ]
A-Maverick 13:10 11.12.2008
Вкурил. Но появилась проблема, которую не могу решить.
При обращении по ссылке вида
www.site.ru/001/page и правиле редиректа
RewriteRule ^([0-9]+)/([a-zA-Z]+)$ ?i=$1&subp=$2
компьютер конечного пользователя пытается искать все картинки, css и js файлы в дериктории p001. Как этого избежать?
Один из способов ясен - прописывать везде абсолютные пути. Но это слишком трудоёмко, тем более что имя домена ещё не известно.
Как бы по-элегантнее обойти этот вопрос?
RewriteBase / прописано - не помогает [Ответ]
A-Maverick 13:46 11.12.2008
Допёрло.
Прописал ниже правило
RewriteRule ^([0-9]+)/(.*)$ /$2 [Ответ]
ilyaerin 14:11 11.12.2008

Сообщение от A-Maverick:
компьютер конечного пользователя пытается искать все картинки, css и js файлы в дериктории p001. Как этого избежать?

Насколько я понимаю - у картинок css и прочечего нужно писать всегда точные абсолютные пути, а не относительные. Подробнее тут: http://phpfaq.ru/paths [Ответ]
skyfish 16:57 19.01.2009
1)Достаточно писать <a href=/img/myphoto.jpg> вместо <a href=img/myphoto.jpg>.

2)или абстоютные как сказали выше <a href=http://www.example.com/img/myphoto.jpg> что ИМХО не очень удобно.

3) либо правило в апач [Ответ]
ilyaerin 17:08 19.01.2009

Сообщение от skyfish:
1)Достаточно писать <a href=/img/myphoto.jpg> вместо <a href=img/myphoto.jpg>.
2)или абстоютные как сказали выше <a href=http://www.example.com/img/myphoto.jpg> что ИМХО не очень удобно.

В той ссылке, что я дал - есть отличное объяснение, что такое абсолютные и относительные пути.

"/img/myphoto.jpg" - абсолютный путь.
"img/myphoto.jpg", "../img/myphoto.jpg" - относительные пути. [Ответ]
Re$pectrum 17:46 19.01.2009
Да не надо мудрить)

Сообщение от :
Options -Indexes
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css¦js¦jpg¦gif)$
RewriteRule ^(.*)$ index.php?p=$1

Вот так пропиши хтакксес
и у тебя будет один массив explode('/',$_GET['p']);
Его разбираешь и что надо отображаешь. [Ответ]
ilyaerin 17:52 19.01.2009
Я бы сказал - что ваш пример - и есть мудрить. Зачем городить разбор всех запросов (небольшая но дополнительная ненужна нагрузка) - писать для этого скрипт, если достаточно просто прописать правильные пути еще при верстке? [Ответ]
Вверх