Как сделать адресацию сайта статической? Сайт на asp'e.

J
На сайте с 25.10.2006
Offline
91
1718

Подскажите plz как переделать динамическую адресацию сайта на статическую. То есть сейчас что-то вроде searchengines.ru/newthread.php?do=newthread&f=48, а нужно вот в таком виде /article/rubric/webtech/XMLbook. Сайт написан на аспе. Спасибо.

Коля Дубр
На сайте с 02.03.2005
Offline
153
#1

Не удивлюсь, если так же, как и на пхп +) Настраиваете сервер, чтоб он передавал 404 ошибку скрипту, а в скрипте разбираете $_SERVER['REQUEST_URI'] как Вам удобно. Кроме того, если сайт работает под апачем - можно изучить mod_rewrite, есть ли аналог под IIS - не знаю. Вообще, тут важнее что за сервер, чем какой язык используется.

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
dkameleon
На сайте с 09.12.2005
Offline
386
#2

если есть возможность устанавливать расширения на серере:

http://isapirewrite.com/

http://www.motobit.com/help/url-replacer-rewriter/iis-mod-rewrite.asp

Дизайн интерьера (http://balabukha.com/)
SE
На сайте с 26.02.2006
Offline
71
#3
Коля Дубр:
Не удивлюсь, если так же, как и на пхп +) Настраиваете сервер, чтоб он передавал 404 ошибку скрипту, а в скрипте разбираете $_SERVER['REQUEST_URI'] как Вам удобно. Кроме того, если сайт работает под апачем - можно изучить mod_rewrite, есть ли аналог под IIS - не знаю. Вообще, тут важнее что за сервер, чем какой язык используется.

Не лучший вариант, лог с ошибками будет засоряться.

Коля Дубр
На сайте с 02.03.2005
Offline
153
#4
saint_evil:
Не лучший вариант, лог с ошибками будет засоряться.

А нужен ли он, по-хорошему? Я стараюсь возможные ошибки отлавливать на уровне приложения. Т.е. если кто-то долбится в УРЛ, который не может обработать движок, делается запись в собственном логе движка. Меня вполне устраивает, хотя, возможно, часть ценной информации и теряется. Ну и вариант с mod_rewrite никто не отменяет, dkameleon вроде дал ссылку на его IIS-ный аналог. Меня такой подход не устраивает архитектурно - логика разбора УРЛов - это логика МОЕГО приложения, и я не хочу перепоручать часть логики серверу. Однако, если совсем уж напрягает рост еррор-лога, можно любые урлы передавать своему скрипту не через 404 ошибку, а через тот же mod_rewrite. Однако имхо это тот же МТС, но в профиль =)

pro-maker
На сайте с 08.12.2003
Offline
281
#5
Коля Дубр:
Меня такой подход не устраивает архитектурно - логика разбора УРЛов - это логика МОЕГО приложения, и я не хочу перепоручать часть логики серверу. Однако, если совсем уж напрягает рост еррор-лога, можно любые урлы передавать своему скрипту не через 404 ошибку, а через тот же mod_rewrite. Однако имхо это тот же МТС, но в профиль =)

Илья, Вы о чем? :) mod_rewrite для этого предназначен, чем он не устраивает "архитектурно"? Лучше динамику оставить.

Коля Дубр
На сайте с 02.03.2005
Offline
153
#6

Виталий, mod_rewrite силен, но мы сильнее =)

На самом деле, этот модуль отлично подходит для превращения "/some/path/here/" в "/index.php?first=some&second=path&third=here". Это подходит для проектов, где схема разрешения урлов определена однозначно и не вызывает вопросов. А если, скажем, в проект должна быть заложена возможность кардинально изменить схему урлов - нужен кусок кода, отвечающий за то, как пишутся ссылки. Внимание вопрос: почему бы не заставить тот же кусок кода определять, как ссылки "читаются"? Ну, самый дурной пример - хотим изменить разделитель "лексем". Разумеется, это должно делаться так (сочиняю на ходу, на самом деле все несколько хитрее):


// урл вида /root-134/sub-567/last-444/
$urlmaster->setDelimiter(0, '/');
$urlmaster->setDelimiter(1, '-');
$urlmaster->setValidTokens(array('root', 'sub', 'last'));

А потом так:


// урл вида mode.134-item.567-type.html (где-то я такое видел =)))
$urlmaster->setDelimiter(0, '-');
$urlmaster->setDelimiter(1, '.');
$urlmaster->setValidTokens(array('mode', 'item', 'type'));

Ну, и все это управляется из админки, безо всякой необходимости лезть в .htaccess =) mod_rewrite годится, чтоб прикрутить ЧПУ к пхпбб. Но не понятно, зачем он нужен, если УРЛ тебе и так подконтролен =)

P.S. Прошу прощенья у топикстартера за оффтопик +)

pro-maker
На сайте с 08.12.2003
Offline
281
#7

Сорри, за продолжение офф-топа.

Илья, у каждой технологии есть свои преимущества и недостатки, но также существуют и разные возможности для реализации разных задач. Приведенный пример можно и через mod_rewrite реализовать, если разные типы контента разнести по разным доменам. Но обсуждение возможных вариантов реализации без контекста задачи - будет десять мнений и все верные. :) Основным же подходом считаю использование стандартных возможностей для минимизации участия профессиональных программистов. :D

В примере выше я бы, поскольку это уже не ЧПУ (т.к. запомнить адрес страницы или точку в структуре сайта практически невозможно при таком УРЛе), использовал динамику, предварительно установив правила очередности переменных в УРЛах.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий