IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   как устроен шаблон вида... (http://www.imho.ws/showthread.php?t=35590)

sanchos 01.08.2003 12:43

как устроен шаблон вида...
 
Здрасте, опять я с вопросиком :)
Значится, когда я делаю сайт с небольшим количеством ссылок и неглубокой системой навигации, то делаю ссылки вида index.php?page=page_id... И в зависимости от значения $page, выводится соответствующая инфа.
Так вот вопрос в том, по какому принципу устроена навигация типа www.site.com/page/... Ведь везде один и тот же шаблон, как я понимаю... Так вот как этим лучше пользоваться, и как пользоваться вообще? :)
Вроде понятно объяснил... по крайней мере, будем надеяться, что понятно :)

Aeon 01.08.2003 13:16

для этого очень удобно использовать модуль Апача mod_rewrite
если по английски сечёшь, здесь подробные объяснения:
http://www.alistapart.com/stories/urls/index.html
http://www.alistapart.com/stories/succeed/

вкратце, этот модуль даёт Апачу возможность переписывать на лету адрес типа site.com/archive/23 в site.com/archive.php?id=23. очень удобная штука.

sanchos 01.08.2003 13:58

Спасибо тебе :)
Почиталя... ну там просто допопы инфы :( толком я не разобрался: на до ли прописать все это дело только в .htaccess или еще надо прописывать и в шаблон. :(

Может у тебя есть простой пример этого дела? :/

medved2002 01.08.2003 14:54

Могу на почту выслать.....

medved2002 01.08.2003 14:55

Хотя нет - нашел

http://www.egoroff.spb.ru/portfolio/...d_rewrite.html
и
http://www.egoroff.spb.ru/portfolio/...riteguide.html

medved2002 01.08.2003 14:57

Есть вариант не модреврайтом делать а делать ErrorDocument'ом какой нидь пхп файл в котором разбирать урлы и взависимости от них выводить инфу.

sanchos 01.08.2003 15:14

medved2002
Слушай! По поводу ErrorDocument'а я давно спрашивал... Это мне очень интересно. Как хотя бы узнать что такого нарбал юзер и куда хотел попасть на моем сайте, если очутился на этом самом эррор-месте? :)
Буду очень тебе благодарен :)

ЗЫ Если доки есть, то пришли :)

medved2002 01.08.2003 15:24

Вот этих переменных хватит выше крыши..

$_SERVER["REDIRECT_ERROR_NOTES"]
$_SERVER["REDIRECT_REQUEST_METHOD"] - гет переменные
$_SERVER["REDIRECT_STATUS"] - изза чего редеректнули у тя будет 404
$_SERVER["REDIRECT_URL"] - то что юзер набрал

$_SERVER["QUERY_STRING"] - гет переменные
$_SERVER["REQUEST_URI"] - то что юзер набрал

ЗЫ А доку я тебе в ссылках дал.. Там подробнее некуда..

sanchos 01.08.2003 16:48

Цитата:

ЗЫ А доку я тебе в ссылках дал.. Там подробнее некуда..:
undefined
Блин, задолбался я читая... :(
Может мне кто-нить просто пример даст, что надо прописать в .htaccess так, чтобы site.com/page_/part_/id_ превращалось в site.com/index.php?page=page_&part=part_&id=id_

Заранее сенькс :)

ЗЫ А, да... В самом шаблоне че-нить прописывать надо?

sanchos 01.08.2003 16:56

Хм... че-то не работает с 404'ой :( Может я че не так делаю? Как и куда это прописывать надо? :(
Ну трындец... вроде так делаю, а нифига :( Так как надо? :)

LowNoise 01.08.2003 17:06

Здесь на эту тему хорошо написано:
http://spectator.ru/technology/php/user_friendly_urls

sanchos 01.08.2003 17:13

Фигово... в .htaccess я прописываю:
ErrorDocument 404 /404.php
Он мне ее не находит :(
Приходится писать абсолютный путь... А там значение переменной соответственно "/404.php"
В чем дело может быть? :(

RaZEr 01.08.2003 21:26

В том, что со слеша начинаются абсолютные пути ...

Aeon 01.08.2003 21:32

medved2002
делать это ErrorDocument-ом когда это можно элегантно сделать mod_rewrite-ом, на мой взгляд просто неприлично - это просто использование ErrorDocument не по назначению... ведь ErrorDocument оставляет логи в Апаче, и если ты, например, хочешь использовать логи для того чтобы находить дохлые линки, ты никак не сможешь определить где действительно не хватает файла, а где лог ошибки которая преднамеренно существует в такой «системе» навигации. Нет, не нравится мне такое.

sanchos.fuge
вот пример:
Код:

.htaccess

RewriteEngine on
RewriteRule ^browse/([0-9]+)/([0-9]+) /home/virtual/site139/fst/var/www/html/browse.php?v[category]=$1&v[id]=$2
RewriteRule ^browse/([0-9]+) /home/virtual/site139/fst/var/www/html/browse.php?v[category]=$1
RewriteRule ^browse/$ /home/virtual/site139/fst/var/www/html/browse.php
RewriteRule ^browse$ /home/virtual/site139/fst/var/www/html/browse.php

это превратит адрес www.site.com/browse/ в www.site.com/browse.php, www.site.com/browse/09/24/ в www.site.com/browse.php??v[category]=09&v[id]=24
и www.site.com/browse/foo2/ в опять-же www.site.com/browse.php

главное, проставь абсолютный путь к адресу на который переписываешь.

пробуй.

sanchos 04.08.2003 09:24

RaZEr
Я и со слешом пробовал и без него :(

RaZEr 04.08.2003 09:34

Значит htaccess не туда положил или файл с ошибкой ...

sanchos 04.08.2003 11:15

Aeon
:((( Говорит internal server error... :( Может ты мне можешь подсказать, пожалуйста, что мне делать конкретно в моем случае? А то я уже задолбался пробовать, писать... все равно нифига :(
DOCUMENT_ROOT /home/local.my/www.site
Сам файл index.php, через который нужно все обрабатывать на ходится на d:/fuge/apache/home/local.my/www.site/
Так вот как мне написать этот факин мод_реврайт? :(
Заранее большое спасибо

RaZEr 04.08.2003 11:25

Интернал сервер ерор говорит о том, что htaccess ты написал криво. Не мудри, и просто положи твой 404.php в одну папку с htaccess ...

sanchos 04.08.2003 11:29

RaZEr
У Aeon'а я спрашивал про mod_rewrite... И интернал еррор выдает из-за этого.
А начсет 404... то страница лежит вместе с .htaccess. Он все понимает, но только если указать абсолюный урл 404-ой страницы, а так не находит :(

medved2002 04.08.2003 11:38

2Aneon... mod-rewrite - это конечно хорошо... если у тя есть возможность править конфы Апачи... а если нет?

RaZEr 04.08.2003 11:38

Да не просек я что ты про реврайт именно спросил. А про 404-ую:
Код:

ErrorDocument 404 error.php?type=404
у меня работало везде ...

Aeon 04.08.2003 11:40

sanchos.fuge
попробуй так:
Код:

.htaccess
RewriteEngine on
RewriteRule ^page/([0-9]+)/([0-9]+)/([0-9]+) d:/fuge/apache/home/local.my/www.site/index.php?page=$1&part=$2&id=$3
RewriteRule ^page/$ d:/fuge/apache/home/local.my/www.site/index.php
RewriteRule ^page$ d:/fuge/apache/home/local.my/www.site/index.php

это должно переписывать адреса формата site.com/page/00/01/02 в site.com/index.php?page=00&part=01&id=02.

RaZEr 04.08.2003 11:40

Цитата:

mod-rewrite - это конечно хорошо... если у тя есть возможность править конфы Апачи... а если нет?
А если нет, то виртуальные хосты через реврайт конечно не пропишешь, а вот все остальное - легко :ooh:

Aeon 04.08.2003 11:41

medved2002
зачем править конфу, всё через .htaccess запросто делается :) и любой себя уважающий хост даёт возможность работы с .htaccess.

sanchos 04.08.2003 12:03

Aeon
Теперь он мне говорит:
.htaccess: Invalid command 'RewriteRule', perhaps mis-spelled or defined by a module not included in the server configuration
Где сделать этот инклуд в сервер конфигурэйшн? :/

RaZEr
Так вот так тоже не работает :( Если указать физический путь, то не обрабатывает php-код :( Ладно... фиг с ним

medved2002 04.08.2003 12:07

2Aeon
Эххх обяснил бы ты это некоторым хостерам. :))))))

А так конечно mod-rewrite... не зря же его делали :))

Так теперь попробуем разобраться чего там у sanchos.fuge происходит

sanchos 04.08.2003 12:09

medved2002
Наконец-то и про меня вспомнили :)

Aeon 05.08.2003 00:02

sanchos.fuge
хмм... и ты включил RewriteEngine on? странно... если есть доступ к httpd.conf, проверь что линии
LoadModule rewrite_module modules/mod_rewrite.so
и
AddModule mod_rewrite.c
не закомментированы...

sanchos 05.08.2003 09:54

Aeon
Фигово... у меня оказывается была порезанная версия :( Поставил полную. Теперь ошибок не выдает, но все равно не хочет :( Видимо что-то с путями не так... 404-ую тоже мне находить не хочет :(
Где прописать, чтоб он искал файлы относительно директории, которой мне надо - корневой моего сайта?

sanchos 06.08.2003 13:45

Народ! Вы про меня забыли? :(
Подскажите что может быть с путями, если он их не находит?... Когда указываю теже пути (всмысле отношения) в .htaccess для файла с паролями, то находит намана, а вот к 404 и по поводу mod_rewrite не хочет :(
Что и как делать?

RaZEr 06.08.2003 14:10

Переставь апач (поставь нормальный, с apache.org) ... никто не ведает что было понаписано в конфигах и что ты еще понаписал ...

sanchos 06.08.2003 14:24

RaZEr
Ну да, ты прав :)

ЗЫ Я что-то такое слышал, что mod_rewrite может не работать из-за своей локальности... всмысле, если стоит локально. так? :-/

RaZEr 06.08.2003 14:36

Нет ...

sanchos 06.08.2003 16:37

Понял, пасиб, буду разбираться :)
Ох... :/


Часовой пояс GMT +4, время: 23:21.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.