Старый 09.12.2008, 21:51   #1   
иногородний
 
Аватар для A-Maverick
 
Сообщений: 231
Регистрация: 26.10.2008
Возраст: 39

A-Maverick вне форума Не в сети
запрос вида www.site.ru/p111

Интересует, как на многих сайтах организуется обработка урл-ов вида w ww.site.ru/p111 ?
(Например на ВКонтакте, где /id12345) и прочее?
Что для этого вообще нужно? Какие технологии должны присутствовать на хостинге и какие скрипты нужно писать?
  Ответить с цитированием
Старый 09.12.2008, 22:13   #2   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 44

alemiks вне форума Не в сети
Цитата:
Сообщение от 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-запрос как обычно
  Ответить с цитированием
Старый 09.12.2008, 22:16   #3   
иногородний
 
Аватар для A-Maverick
 
Сообщений: 231
Регистрация: 26.10.2008
Возраст: 39

A-Maverick вне форума Не в сети
Да, не оговорил условия.
Работать всё должно на связке Apache + PHP4.
Создать папки уже была мысль, но тогда при заходе на фтп глаза будут лезть на лоб (динамика развития сайта дойдёт до 10000 ссылок, в которых каждая должна ссылаться на свою страницу)
  Ответить с цитированием
Старый 09.12.2008, 22:18   #4   
иногородний
 
Аватар для A-Maverick
 
Сообщений: 231
Регистрация: 26.10.2008
Возраст: 39

A-Maverick вне форума Не в сети
Цитата:
Сообщение от alemiks Посмотреть сообщение
— все запросы перенаправляются к одному файлу, тогда получаем строку запроса, разбираем её и выводим нужную инфу
— запросы превращаются в get-запросы с параметрами к разным файлам, тогда обрабатываем get-запрос как обычно
С первым вариантом более-менее понятно... подменить страницу, выводящуюся при 404-й ошибке...

А вот второй вариант более интересен. Можно по-подробнее, как именно можно перевести подобный урл в гет-запрос?
  Ответить с цитированием
Старый 09.12.2008, 22:24   #5   
xxCENSOREDxx
 
Сообщений: 983
Регистрация: 09.04.2006
Возраст: 44

alemiks вне форума Не в сети
Цитата:
Сообщение от A-Maverick Посмотреть сообщение
С первым вариантом более-менее понятно... подменить страницу, выводящуюся при 404-й ошибке...
нет, это прошлый век. запросы направляются с помощью mod_rewrite к файлу index.php, например
Цитата:
Сообщение от A-Maverick Посмотреть сообщение
А вот второй вариант более интересен. Можно по-подробнее, как именно можно перевести подобный урл в гет-запрос?
как раз первый вариант интереснее, так как второй обычно применяют, когда нужно из готового сайта со страшными урлами превратить в сайт с чпу, не переписывая скрипты
  Ответить с цитированием
Старый 09.12.2008, 23:07   #6   
иногородний
 
Аватар для A-Maverick
 
Сообщений: 231
Регистрация: 26.10.2008
Возраст: 39

A-Maverick вне форума Не в сети
Ладно, покурю эту тему. Спасибо за наставление :]
  Ответить с цитированием
Старый 11.12.2008, 13:10   #7   
иногородний
 
Аватар для A-Maverick
 
Сообщений: 231
Регистрация: 26.10.2008
Возраст: 39

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

A-Maverick вне форума Не в сети
Допёрло.
Прописал ниже правило
RewriteRule ^([0-9]+)/(.*)$ /$2
  Ответить с цитированием
Старый 11.12.2008, 14:11   #9   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Цитата:
Сообщение от A-Maverick Посмотреть сообщение
компьютер конечного пользователя пытается искать все картинки, css и js файлы в дериктории p001. Как этого избежать?
Насколько я понимаю - у картинок css и прочечего нужно писать всегда точные абсолютные пути, а не относительные. Подробнее тут: http://phpfaq.ru/paths
  Ответить с цитированием
Старый 19.01.2009, 16:57   #10   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
1)Достаточно писать <img src=/img/myphoto.jpg> вместо <img src=img/myphoto.jpg>.

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

3) либо правило в апач
  Ответить с цитированием
Старый 19.01.2009, 17:08   #11   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Цитата:
Сообщение от skyfish Посмотреть сообщение
1)Достаточно писать <img src=/img/myphoto.jpg> вместо <img src=img/myphoto.jpg>.
2)или абстоютные как сказали выше <img src=http://www.example.com/img/myphoto.jpg> что ИМХО не очень удобно.
В той ссылке, что я дал - есть отличное объяснение, что такое абсолютные и относительные пути.

"/img/myphoto.jpg" - абсолютный путь.
"img/myphoto.jpg", "../img/myphoto.jpg" - относительные пути.
  Ответить с цитированием
Старый 19.01.2009, 17:46   #12   
ПараноЙик
 
Аватар для Re$pectrum
 
Сообщений: 676
Регистрация: 15.08.2006

Re$pectrum вне форума Не в сети
Да не надо мудрить)
Цитата:
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']);
Его разбираешь и что надо отображаешь.
  Ответить с цитированием
Старый 19.01.2009, 17:52   #13   
фотограф
 
Аватар для ilyaerin
 
Сообщений: 2,738
Регистрация: 20.10.2004

ilyaerin вне форума Не в сети
Я бы сказал - что ваш пример - и есть мудрить. Зачем городить разбор всех запросов (небольшая но дополнительная ненужна нагрузка) - писать для этого скрипт, если достаточно просто прописать правильные пути еще при верстке?
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind