Как сделать ЧПУ

gromitus

Новичок
Как сделать ЧПУ

http://spectator.ru/technology/php/user_friendly_urls
ЧПУ. Что такое, как сделать и ссылки на статтьи про тех тонкости.

http://sitemaker.ru/technologies/webserver/mod_rewrite
http://sitemaker.ru/technologies/webserver/mod_rewrite2
http://sitemaker.ru/technologies/webserver/mod_rewrite3
- а это ссылки на хороший, понятный урок по mod_rewrite.

(хотел опубликовать в тему соответствующую - но Фанат её закрыл.)
Возможно этот топик сотрут, но я просто долго ссылки искал на компе у себя, ну и в конце концов не пропадать же добру.

-~{}~ 04.10.04 19:59:

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

SiMM

Новичок
gromitus, если бы ты был внимательнее, то не изобретал бы велосипед и обнаружил бы эти ссылки в избранном
 

gromitus

Новичок
честно: я их оттудово не пёр)) я даже о такой теме не знал))
 

SelenIT

IT-лунатик :)
Лично меня очень привлекает вариант с FilesMatch (способ 4 от Spectator'а). Он тоже позволяет постить форму на несуществующий адрес и навскидку менее ресурсоемок, чем mod_rewrite, а также не требует наличия последнего на хостинге :). Насколько я смог выяснить на данный момент, этот способ не работает в Apache 2, что для меня несущественно.

Однако два момента меня смущают: 1) мне почему-то не удалось найти явного указания на него в документации, и 2) судя по всему, он не очень распространен среди профессионалов. Почему? Какие еще есть "подводные камни" этого метода?
 

MiRacLe

просто Чудо
ForceType , FilesMatch

менее рапространён имхо из-за того что первоё что найдешь в инете на тему "перезаписи" урлов - кучу примеров про mod_rewrite

менее ресурсоёмок, потому что [могу врать]он не делает внутренний вызов ещё одного апача,как в случае с mod_rewrite[/могу врать]

подводных камней не нашёл, но пользуюсь(для верности наверное) mod_rewrite
 

gromitus

Новичок
Selen It - знаешь почему не работает? потому что у тебя наверное пхп стоит в качестве модуля апача. Помойму в 'jnv случае он не работает.

А, кстати вот ещё что интересное читал. То что ненадо всё перебрасывать на один пхпшник и им уже думать куда посылать клиента. Гораздо быстрее писать в htaccess (то бишь апач быстрее сообразит, чем пхпшка).
 

SelenIT

IT-лунатик :)
MiRacLe, спасибо за ссылки и весьма правдоподобное объяснение. Однако в этих главах мана я так и не нашел явного ответа на вопрос более чем просто авторитетного специалиста в следующем триде. Эксперимент отвечает - да. А документация молчит :confused: ...

gromitus, как раз у меня (Apache 1.3.31, PHP 4.3.8 как модуль, Win) все работает. Но вот вопрос, сохранится ли такое положение дел в следующих версиях?
 

MiRacLe

просто Чудо
SelenIT можно вопросы?
1) а что за "Вопрос" ?
2) о чём молчит документация? (могу предположить - она немая,потому и молчит - это же просто файлы на сервере - они не умеют говорить)

в документации чётко и ясно описано что делают вышеописанные директивы, документация apache как бы и не должна "кричать" о том,что эти директивы можно использовать в "недокуметированных" целях(как минимум по двум причинам - 1) она "немая" 2) - mod_php это не "подпроект" apache team

о том что "профи" его не "юзают" ты откуда узнал? тебе все "профи" отчитались?
 

SelenIT

IT-лунатик :)
MiRacLe, в том топике на XPoint'e, где я тоже влез с вопросом о ЧПУ на FilesMatch и его ограничениях, я был огорошен фразой
Вы хотите сказать, что это работает для несуществующих файлов и директорий?
Отсюда оба моих вывода...
 

MiRacLe

просто Чудо
да работает , пример тому - статья Смирнова и твой собственный опыт и это "кстати" совсем не противоречит примеру из документации в котором в явном виде для каталога "images" выставлялся content-type - img/gif

а "авторитетным специалистам" свойственно ошибаться, как впрочем и другим смертным - по не знанию,либо по "непониманию"
 

SelenIT

IT-лунатик :)
Работает. Не противоречит. Но и явно не вытекает из него и не подтверждается непосредственно. Все-таки, в примере речь идет о реальных файлах в реальном каталоге (насколько я понял).

А в Apache 2, опять же по авторитетным. но мной лично не проверенным данным - не работает.

Вот я и опасаюсь: если это недокументированная "фича", не исчезнет ли она в будущих версиях первой ветки Апача?
 

MiRacLe

просто Чудо
"фича" документирована (судя по ссылкам которые я привёл выше ;o) ), но имеено "опасаясь" я пользуюсь mod_rewrite

в первой ветке не исчезнет ибо "Base"... насчёт второй прогнозы несколько "туманны"

DocumentRoot - реальный каталог ?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: SelenIT
2) судя по всему, он не очень распространен среди профессионалов. Почему? Какие еще есть "подводные камни" этого метода?
Да практически никаких. Разве что вот поисковики при индексации сайта будут получать ошибку 406, но это фигня, ведь правда?
 

fixxxer

К.О.
Партнер клуба
Автор оригинала: Sad Spirit
поисковики при индексации сайта будут получать ошибку 406
А вот и нифига.
Проверяй - на www.php5.ru используется именно этот способ, никаких header("HTTP/1.1 200 OK") или подобного нет.

-~{}~ 04.10.04 23:57:

.htaccess
Код:
Action throw /index.php
<FilesMatch "^([^.]+)$">
ForceType throw
</FilesMatch>
index.php
//blablabla
list ($type, $file, $number) = explode("/", substr(strtok($_SERVER['REQUEST_URI'],'?'),1));
//blablabla
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
угу, вроде работает, 406 получить не удалось. видимо она вылезает, если использовать ForceType как-то по-другому, не как там.
 

inTox

вёбных дел мастер
тоже в свое время пришёл к выводу что мод-реврайт — просто модно. Большинство, когда говорит о ЧПУ имеет ввиду либо форсирование 404 либо мод_реврайт. Никаких объективных причин непопулярности FilesMatch я не знаю, объяснил бы кто, что ли. или все уже пересели на второй Апач?..
 

Фанат

oncle terrible
Команда форума
причем, что самое интересное!
Все богатство модуля мод реврайт используют... чтобы получить функциональность throw!
 
Сверху