главная / Web-дизайн / FAQ по ЧПУ (человекопонятные URL) FAQ по ЧПУ (человекопонятные URL)ЧПУ - это термин, придуманный командой НовоКиберска, обозначает он "Человекопонятный УРЛ". Термин нигде широко не употреблялся, пока я не написал 5 сентября 2000 года заметку "ЧПУ и PHP". За эти три года термин довольно неплохо раскрутился. За эти годы очень многие ссылались на эту заметку, поэтому я взял на себя труд переписать ее, добавив еще несколько способов сделать ЧПУ и убрав всякий мусор. Итак…В
принципе, ничего нового и оригинального в идее понятного УРЛа нет. Про
это писал и Лебедев, и другие товарищи. Вообще, мне всегда нравились
УРЛы такого, например, вида:
http://php.resourceindex.com/Complete_Scripts/Guestbooks/ Итак, как это сделать в домашних условиях? Способ раз Вообще, самая первая мысль - это создавать для каждой заметки поддиректорию с соответствующим именем и помещать в нее index.html, то есть сделать так, чтобы по адресу http://spectator.ru/technology/php/user_friendly_urls лежал бы реальный файл. Разумеется, так дело не пойдет. Способ два Думаем дальше. Раз страница не существует, то она выдает 404. Так что вторая идея - прописать в фале .htaccess страницу, которая будет выдаваться при ошибке 404, а уже эта страница будет смотреть на текущий УРЛ и выдавать нужный документ То есть, в .htaccess пишем: ------------------------------------ ErrorDocument 404 / index . php3 ErrorDocument 401 / index . php3 ------------------------------------ Пользователь набирает http://spectator.ru/technology/php/user_friendly_urls, такая страница не найдена, и загружается файл index.php3. Дальше - все просто. Переменная $REQUEST_URI дает нам адрес вызываемой страницы (в данном случае это будет /technology/php/user_friendly_urls), вывести на экран соответствующий документ - дело техники. Этого мало. В некоторых браузерах и с поисковиками такой фокус не пройдет: страница 404 будет выдавать соответствующий код, и страницы индексироваться не будут. Поэтому надо, чтобы страница, которая грузится в случае ошибки 404, изменяла бы код ошибки и сигналила, мол, все ОК, есть такая страница: Итого: прописываем в .htaccess страницу, которая, собственно, за все отвечает (у меня это index.php3). В этой странице пишем php-скрипт, который работает с $REQUEST_URI, шлет заголовок "http/1.0 200 Ok" и отображает то, что надо. Плюсы: Очень простой способ. Работает почти везде. Минусы: При таком способе нельзя постить содержимое формы на несуществующие псевдоурлы. И если в Апаче ведется лог 404-ых ошибок, то он будет забит. Способ три Для этих (и не только) целей есть специальный модуль в Апаче, который называется mod_rewrite. Он позволяет "переписывывать урлы", то есть, преобразовывать их "на лету" по правилам, которые вы ему опишите. Это очень мощный модуль, и если вы в нем разберетесь, то сможете творить чудеса. Сам я до сих пор довольно мало с ним работал, поэтому читайте документацию, благо, что ее полно. Module mod_rewrite URL Rewriting Engine. A Users Guide to URL Rewriting with the Apache Webserver. Модуль Apache mod_rewrite. Mod_rewrite для чайников. Плюсы: Очень мощный способ. Минусы: Может не хватить мозгов. На хостинге может быть не установлен этот модуль. Способ четыре Основан на директиве FilesMatch, которая в Апаче является core feature. Все просто. Пишем опять же в .htaccess Action throw / index . php ForceType throw FilesMatch --> ForceType application / x - httpd - php FilesMatch --> После этого все УРЛы, которые подпадают под условие "^([^.]+)$", (то есть все урлы, в которых не содержится точка) будут передаваться на index.php. Вы можете написать свое условие, разумеется. Плюсы: Простой и удобный способ. Минусы: Говорят, что для того, чтобы ForceType работал, php должен быть подключен к апачу в виде модуля. Если php вызывается, как обыкновенный CGI - ForceType работать не будет. Источник: i-faq.ru |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |