![]() |
как устроен шаблон вида...
Здрасте, опять я с вопросиком :)
Значится, когда я делаю сайт с небольшим количеством ссылок и неглубокой системой навигации, то делаю ссылки вида index.php?page=page_id... И в зависимости от значения $page, выводится соответствующая инфа. Так вот вопрос в том, по какому принципу устроена навигация типа www.site.com/page/... Ведь везде один и тот же шаблон, как я понимаю... Так вот как этим лучше пользоваться, и как пользоваться вообще? :) Вроде понятно объяснил... по крайней мере, будем надеяться, что понятно :) |
для этого очень удобно использовать модуль Апача 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. очень удобная штука. |
Спасибо тебе :)
Почиталя... ну там просто допопы инфы :( толком я не разобрался: на до ли прописать все это дело только в .htaccess или еще надо прописывать и в шаблон. :( Может у тебя есть простой пример этого дела? :/ |
Могу на почту выслать.....
|
|
Есть вариант не модреврайтом делать а делать ErrorDocument'ом какой нидь пхп файл в котором разбирать урлы и взависимости от них выводить инфу.
|
medved2002
Слушай! По поводу ErrorDocument'а я давно спрашивал... Это мне очень интересно. Как хотя бы узнать что такого нарбал юзер и куда хотел попасть на моем сайте, если очутился на этом самом эррор-месте? :) Буду очень тебе благодарен :) ЗЫ Если доки есть, то пришли :) |
Вот этих переменных хватит выше крыши..
$_SERVER["REDIRECT_ERROR_NOTES"] $_SERVER["REDIRECT_REQUEST_METHOD"] - гет переменные $_SERVER["REDIRECT_STATUS"] - изза чего редеректнули у тя будет 404 $_SERVER["REDIRECT_URL"] - то что юзер набрал $_SERVER["QUERY_STRING"] - гет переменные $_SERVER["REQUEST_URI"] - то что юзер набрал ЗЫ А доку я тебе в ссылках дал.. Там подробнее некуда.. |
Цитата:
Может мне кто-нить просто пример даст, что надо прописать в .htaccess так, чтобы site.com/page_/part_/id_ превращалось в site.com/index.php?page=page_&part=part_&id=id_ Заранее сенькс :) ЗЫ А, да... В самом шаблоне че-нить прописывать надо? |
Хм... че-то не работает с 404'ой :( Может я че не так делаю? Как и куда это прописывать надо? :(
Ну трындец... вроде так делаю, а нифига :( Так как надо? :) |
Здесь на эту тему хорошо написано:
http://spectator.ru/technology/php/user_friendly_urls |
Фигово... в .htaccess я прописываю:
ErrorDocument 404 /404.php Он мне ее не находит :( Приходится писать абсолютный путь... А там значение переменной соответственно "/404.php" В чем дело может быть? :( |
В том, что со слеша начинаются абсолютные пути ...
|
medved2002
делать это ErrorDocument-ом когда это можно элегантно сделать mod_rewrite-ом, на мой взгляд просто неприлично - это просто использование ErrorDocument не по назначению... ведь ErrorDocument оставляет логи в Апаче, и если ты, например, хочешь использовать логи для того чтобы находить дохлые линки, ты никак не сможешь определить где действительно не хватает файла, а где лог ошибки которая преднамеренно существует в такой «системе» навигации. Нет, не нравится мне такое. sanchos.fuge вот пример: Код:
.htaccess и www.site.com/browse/foo2/ в опять-же www.site.com/browse.php главное, проставь абсолютный путь к адресу на который переписываешь. пробуй. |
RaZEr
Я и со слешом пробовал и без него :( |
Значит htaccess не туда положил или файл с ошибкой ...
|
Aeon
:((( Говорит internal server error... :( Может ты мне можешь подсказать, пожалуйста, что мне делать конкретно в моем случае? А то я уже задолбался пробовать, писать... все равно нифига :( DOCUMENT_ROOT /home/local.my/www.site Сам файл index.php, через который нужно все обрабатывать на ходится на d:/fuge/apache/home/local.my/www.site/ Так вот как мне написать этот факин мод_реврайт? :( Заранее большое спасибо |
Интернал сервер ерор говорит о том, что htaccess ты написал криво. Не мудри, и просто положи твой 404.php в одну папку с htaccess ...
|
RaZEr
У Aeon'а я спрашивал про mod_rewrite... И интернал еррор выдает из-за этого. А начсет 404... то страница лежит вместе с .htaccess. Он все понимает, но только если указать абсолюный урл 404-ой страницы, а так не находит :( |
2Aneon... mod-rewrite - это конечно хорошо... если у тя есть возможность править конфы Апачи... а если нет?
|
Да не просек я что ты про реврайт именно спросил. А про 404-ую:
Код:
ErrorDocument 404 error.php?type=404 |
sanchos.fuge
попробуй так: Код:
.htaccess |
Цитата:
|
medved2002
зачем править конфу, всё через .htaccess запросто делается :) и любой себя уважающий хост даёт возможность работы с .htaccess. |
Aeon
Теперь он мне говорит: .htaccess: Invalid command 'RewriteRule', perhaps mis-spelled or defined by a module not included in the server configuration Где сделать этот инклуд в сервер конфигурэйшн? :/ RaZEr Так вот так тоже не работает :( Если указать физический путь, то не обрабатывает php-код :( Ладно... фиг с ним |
2Aeon
Эххх обяснил бы ты это некоторым хостерам. :)))))) А так конечно mod-rewrite... не зря же его делали :)) Так теперь попробуем разобраться чего там у sanchos.fuge происходит |
medved2002
Наконец-то и про меня вспомнили :) |
sanchos.fuge
хмм... и ты включил RewriteEngine on? странно... если есть доступ к httpd.conf, проверь что линии LoadModule rewrite_module modules/mod_rewrite.so и AddModule mod_rewrite.c не закомментированы... |
Aeon
Фигово... у меня оказывается была порезанная версия :( Поставил полную. Теперь ошибок не выдает, но все равно не хочет :( Видимо что-то с путями не так... 404-ую тоже мне находить не хочет :( Где прописать, чтоб он искал файлы относительно директории, которой мне надо - корневой моего сайта? |
Народ! Вы про меня забыли? :(
Подскажите что может быть с путями, если он их не находит?... Когда указываю теже пути (всмысле отношения) в .htaccess для файла с паролями, то находит намана, а вот к 404 и по поводу mod_rewrite не хочет :( Что и как делать? |
Переставь апач (поставь нормальный, с apache.org) ... никто не ведает что было понаписано в конфигах и что ты еще понаписал ...
|
RaZEr
Ну да, ты прав :) ЗЫ Я что-то такое слышал, что mod_rewrite может не работать из-за своей локальности... всмысле, если стоит локально. так? :-/ |
Нет ...
|
Понял, пасиб, буду разбираться :)
Ох... :/ |
Часовой пояс GMT +4, время: 23:21. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.