Решил запостить статью о том как делать красивые URL без mod_rewrite. > Что это такое < Идеальный способ сделать это через mod_rewrite. Но иногда, не возможно использовать mod_rewrite. Некоторые делают это так: http://example.com/?p=link Есть более гуманный способ: http://example.com/page.php/link можно еще сократить: .htaccess Код (Text): AddType application/x-httpd-php .page файл php скрипта - .page URL: http://example.com/.page/link Возможно, есть способ избавиться от точки, постите.
Есть. В Апаче есть такая штука, ForceType называется. Она core feature. - Минус - не работает при PHP как CGI... что встречается к счастью, уже редко. Код (Text): Action throw /index.php <FilesMatch "^([^.]+)$"> ForceType throw </FilesMatch> <FilesMatch index.php> ForceType application/x-httpd-php </FilesMatch> Тут хорошо написано - http://spectator.ru/technology/php/user_friendly_urls PS: как раз делаю, почти без mod_rewrite... вот прям счас =))
итого: файл .htaccess Код (Text): <FilesMatch page> ForceType application/x-httpd-php </FilesMatch> файл page PHP: <dl> <dt>BASE DIR</dt><dd><?=dirname($_SERVER['SCRIPT_NAME'])?></dd> <dt>URI</dt><dd><?=$_SERVER['REQUEST_URI']?></dd> </dl> URL: http://example.com/page/link
Ti, тож вариант... просто у меня не обязательно page - у меня это как правило, имя модуля для обработки... поэтому я редиректю все в индекс, кром файлов, иначе картинки и css прийдется тоже скриптом отдавать....
Ti, я стремлюсь минимизрировать логику, ложащуюся на mod_rewrite или ForceType - т.е, получит максимальноу управление программно, я могу так добавлять программно новые модули.
да, я тоже собственно все правило у меня выглядит так: Код (Text): RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L,QSA]
допустим вы сделаете очень красивые ссылки...но они же будут работать только у вас, а не везде(в инете)...
Угадай, почему мы их делаем? =) Именно потому, что они будут работать в инете. Главное - что они не просто "красивые", а очень-очень хорошо индексируемые поисковиками...
NIKO, о чем и разговор идет. Как его лучше просить .) http://ddd.exmachina.ru/web/address_nav/ http://www.artlebedev.ru/kovodstvo/48/ http://spectator.ru/technology/php/user_friendly_urls вот ссылки - они сами ЧПУ и про ЧПУ =)
а я предпочитаю ставить свой обработчик ошибки 404, который выводит Header 200 OK, анализирует строку запроса и соответственно выдает что надо
svk, есть минусы. Апач напрягается с 404 ошибки, если ведет логи. Это раз. Это не спасает от просмотра реальных каталогов, это два. Это медленней, это три. А самое главное, это занимает собсно 404 обработчик, которым я пользуюсь по назначению для файлов.
Горбунов Олег, похоже ты забыл заэкранировать точку Собственно моя лепешка в общую кучку Код (Text): RewriteRule !\.(gif|ico|html|html|css|jpg|zip|rar|doc|js|swf|mp3|mpg|php)$ index.php
Не-а. Точка не является метасимволом для символьного класса, поэтому внутри квадратных скобок - не экранируется.
зачем экранировать точку и исключать типы. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d явно указывает: не существующий файл или папка uri могут быть 14.10.2006; или 20.gif, которое при отсутствии динамически создается
Ti, просто у меня есть вариант, когда есть физическая папка с таковым же именем, но это не та же самая, что и виртуальная...