Новости » Интернет » Что такое ЧПУ и способы преобразования ссылок

Что такое ЧПУ и способы преобразования ссылок

ЧПУ предполагает построение адресов по иерархической схеме, очевидной для человека: вместо http://www.slaed.net/index.php?ext=83465&p1=some&p2=some использовать http://www.slaed.net/doc/83465/some/some. При этом удаление части адреса («укорачивание» адреса на некоторое число секций, разделенных слешами) приводит к попаданию на более высокую ступень навигационной иерархии: http://www.slaed.net/doc/83465/ - документ под номером 83465, http://www.slaed.net/doc/ - список всех документов и т.п.

Первый способ
Cоздать для каждой заметки поддиректорию с соответствующим именем и помещать в нее index.html, то есть сделать так, чтобы по адресу http://www.slaed.net/php/user_urls лежал бы реальный файл.

Второй способ
Использование ошибочной страницы. Если страница не существует, то сервер выдает ошибку 404. Так что вторая идея - прописать в фале .htaccess страницу, которая будет выдаваться при ошибке 404, а уже эта страница будет смотреть на текущий УРЛ и выдавать нужный документ

То есть, в .htaccess пишем:

------------------------------------
ErrorDocument 404 /index.php
ErrorDocument 401 /index.php
------------------------------------

Пользователь набирает http://www.slaed.net/php/user_urls, такая страница не найдена, и загружается файл index.php. Дальше - все просто. Переменная $REQUEST_URI дает нам адрес вызываемой страницы (в данном случае это будет /php/user_urls), вывести на экран соответствующий документ - дело техники.

Этого мало. В некоторых браузерах и с поисковиками такой фокус не пройдет: страница 404 будет выдавать соответствующий код, и страницы индексироваться не будут. Поэтому надо, чтобы страница, которая грузится в случае ошибки 404, изменяла бы код ошибки и сигналила, мол, все ОК, есть такая страница: <?php header("http/1.0 200 Ok"); ?>

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

Плюсы: Очень простой способ. Работает почти везде.
Минусы: При таком способе нельзя постить содержимое формы на несуществующие псевдоурлы. И если в Апаче ведется лог 404-ых ошибок, то он будет забит.

Третий способ
Основан на директиве FilesMatch, которая в Апаче является core feature. Все просто. Пишем опять же в .htaccess

Action throw /index.php<br /> <br /> <FilesMatch "^([^.]+)$"><br /> ForceType throw<br /> </FilesMatch><br /> <br /> <FilesMatch index.php><br /> ForceType application/x-httpd-php<br /> </FilesMatch>


После этого все УРЛы, которые подпадают под условие «^([^.]+)$», (то есть все урлы, в которых не содержится точка) будут передаваться на index.php. Вы можете написать свое условие, разумеется.

Плюсы: Простой и удобный способ.
Минусы: Говорят, что для того, чтобы ForceType работал, php должен быть подключен к апачу в виде модуля. Если php вызывается, как обыкновенный CGI — ForceType работать не будет.

Четвёртый способ
Для этих (и не только) целей есть специальный модуль в Апаче, который называется mod_rewrite. Он позволяет «переписывывать урлы», то есть, преобразовывать их «на лету» по правилам, которые вы ему опишите.

Это очень мощный модуль, и если вы в нем разберетесь, то сможете творить чудеса.

Плюсы: Очень мощный способ.
Минусы: Может не хватить мозгов. На хостинге может быть не установлен этот модуль.


33
Назад

Категории


Общее количество: 97 новостей в 3 категориях

Комментарии

sashkateam
3.50

3.50

Пункты
5
Регистрация
08.06.2011
Предупреждения
Нет
sashkateam
08.06.2011 01:22:15

Ссылка немного больше, но понятнее...

Axxx
Статус
Гость
Axxx
28.02.2006 17:29:17

Ой извиняюсь аплодер уже не надо, привык к тому который есть, теперь идет как по маслу. А по началу так выводил. Но щас вообще форэва и зэбест.
ЗЫ
А почему на этом сайте нет чпу, если вы не смогли сделать я и подавно не сделаю (((

Axxx
Статус
Гость
Axxx
28.02.2006 17:24:26

Вспомни хотя бы вечно перекошенные автоновости в админке. да есть такая беда )))
Делайте ЧПУ в слаед следущем бесплатном и аплодер я тогда будет мне счастье.

AntonioRacter
Статус
Гость
AntonioRacter
24.02.2006 11:20:44

Не понял... Ничегошеньки не понял...
Мне вот надо, чтобы каждый модуль имел свой index.html, (или чтобы было как на этом сайте...) и чего мне делать? Четвертый способ либо не поддерживает хостинг, либо хостинг же выгонит меня за нагрузку на сервак, это я понял... А первый способ? У меня нету никаких папок типа как написано в статейке php/user_urls !!! Так куда мне пихать эти несчастные index'ы ??? И чего писать в индекс - файлах? Смайл - 12
А ЧПУ ОЧЕНЬ нужен Смайл - 12

RUSH
Статус
Гость
RUSH
21.02.2006 18:19:19

Artas, а гед моно почитать подробнее...

Artas
Статус
Гость
Artas
21.02.2006 17:55:05

Вот посмотрите //enrof.net - хороший пример использования ЧПУ
После того, как поставил, сайт стал первым в гугле по ключевым слвам

RUSH
Статус
Гость
RUSH
17.02.2006 17:33:00

xms, не юзаю данные функцие - ничего сказат не могу:)))
ЧПУ мне к примеру особо не горит, но все же нравятся ссылки вида /news/2006/02/15/1/

Или просто /news/546/

xms
Статус
Гость
xms
17.02.2006 17:01:46

RUSH, не спорю, идеального в мире ничего не бывает. Однако ЧПУ и кэш должны быть в любой системе. Да и исправлять найденные ошибки в последующих версиях все же стоит... Вспомни хотя бы вечно перекошенные автоновости в админке (кто пользуется, тот знает о чем речь) и вывод подкатегорий на главной Pages и т.д. и т.п.

RUSH
Статус
Гость
RUSH
17.02.2006 16:52:04

xms, для кого как. Лично я в SLAED прееделываю 5-20% под себя, потому что мне нужно. А есди юзер ничего не знает, не умеет - ему ничего и не нужно:)))
xms, запонни что только самописная CMS будет соответствовать всем твоим требованиям. SLAED при разработке был расчитан на рядового юзера, перешедшего с той же PHP-Nuke.

xms
Статус
Гость
xms
17.02.2006 16:38:41

ЧПУ есть в любой более-менее нормальной CMS (возьмите Мамбо, ДЛЕ, Сапид), пора б уже сделать и в Слаеде, а не разводить руками о существующих методах и о сложности реализации. Для нюки модов ЧПУ - с пяток есть рабочих. А Слаед был и остается системой, где после апгрейда куча всего ручками приходится доделывать... Жаль...

Всего: 18 на 2 страницах по 10 на каждой странице

1 2

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.

Хотите опробовать SLAED CMS в действии?
Идеи и предложения
Обратная связь
Подтверждение

Поделиться
QR-код