WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » **ЧПУ и PHP

**ЧПУ и PHP


Дата публикации: 20-01-2011

Дмитрий Смирнов

 

"Spectator, кстати... а вот ссылки типа http://spectator.novocybersk.ru/issues/160 это мне нравится, ОЧЕНЬ ;))) Напиши в следующей заметке, поподробнее, КАК ты это сделал ? ОК ?"
- такой отзыв пришел на предыдущую заметку - я впервые сделал на "Спектаторе" ЧПУ, начиная именно со 160 заметки. Итак, расскажу про ЧПУ и PHP. Если вы не знаете PHP, и не знаете, какие иногда страшные УРЛы бывают в результате его работы - дальше можно не читать. :)

ЧПУ - это термин, придуманный командой НовоКиберска, обозначает он "Человекопонятный УРЛ". В принципе, ничего нового и оригинального в идее понятного УРЛа нет. Про это писал и

Лебедев

, и

другие дизайнеры

. Вообще, мне всегда нравились ЧПУ на таких сайтах, как, например,

CGI-Resources

или

Softseek

.

 

В общем, когда я перевел "Спектатора" на PHP, начались наезды на, мол, адреса у тебя не совсем удобны. Для тех, кто не знает, заметка 161 имела (бы) такой УРЛ: http://spectator.novocybersk.ru/index.php3?161. Теперь имеет такой: http://spectator.novocybersk.ru/issues/161. Вроде бы, стало лучше. Как это делается?.. Рассказываю по просьбам читателей, ботающих на Php.

Вообще, самая первая мысль - это создавать для каждой заметки поддиректорию с соответствующим номером в директории issues и помещать в нее index.html, то есть сделать так, чтобы по адресу http://spectator.novocybersk.ru/issues/161 лежал бы реальный файл. Разумеется, так дело не пойдет ;(

Вторая идея - прописать в фале .htaccess страницу, которая будет выдаваться при ошибке 404.

То есть:

------------------------------------ 
ErrorDocument 404 /index.php3 
ErrorDocument 401 /index.php3 
------------------------------------ 

Грубо говоря, пользователь набирает http://spectator.novocybersk.ru/issues/161, такая страница не найдена, и загружается файл index.php3. Дальше - все просто. Переменная $REQUEST_URI дает нам адрес вызываемой страницы (в данном случае это будет /issues/161), вывести на экран соответствующий файл - дело техники.

Ан нет. Хорошая идея, а не работает. IE ни в какую не хочет показывать то, что надо, а вместо этого пихает свою стандартную страницу "404" с кучей текста. Тут я и остановился. Не то, чтобы застрял, просто лень было копать дальше.

А на самом деле решалось все просто. Надо, чтобы страница, которая грузится в случае ошибки 404, изменяла бы код ошибки и сигналила, мол, мужик, все ОК, есть такая страница: <?php header("http/1.0 200 Ok"); ?>

Итого: прописываем в .htaccess страницу, которая, собственно, за все отвечает (у меня это index.php3). В этой странице пишем php-скрипт, который работает с $REQUEST_URI, шлет заголовок "http/1.0 200 Ok" и отображает то, что надо.

Пример:

<?php header("http/1.0 200 Ok"); 
$num=$REQUEST_URI; 
$num = eregi_replace ( "/issues/", "", $num ); 
include ($num.".txt"); ?> 

P.s.

Вот еще один способ сделать это по-другому

, а вот

еще один

.

Дмитрий Смирнов
Spectator

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)
Октябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Alan J. Perlis:

    "Когда кто-то говорит: «Я хочу язык программирования, который может делать все, что ему скажу», то я даю этому человеку леденец."

    Опрос

    Как Вам новый дизайн сайта?

    Отлично
    Неплохо
    Нормальный
    Ужасно