ЧПУ і PHP

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

"Spectator, до речі … а ось посилання типу http://spectator.novocybersk.ru/issues/160 це мені подобається, ДУЖЕ;))) Напиши в наступній замітці, детальніше, ЯК ти це зробив? ОК?"

– Такий відгук прийшов на попередню замітку – я вперше зробив на "Спектатор" ЧПУ, починаючи саме з 160 нотатки. Отже, розповім про . Якщо ви не знаєте 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"); ?> 

Ps Ось ще один спосіб зробити це по-іншому, а от ще один.

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

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*