Чтение RSS каналов

Новости

Новости

Категории

Наши новости
Наши новости
Новости проекта
Интернет
Интернет
Мир интернета
Программы
Программы
Компьютерный мир

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

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

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


ЧПУ предполагает построение адресов по иерархической схеме, очевидной для человека: вместо 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

<FilesMatch "^([^.]+)$">
ForceType throw
</FilesMatch>

<FilesMatch index.php>
ForceType application/x-httpd-php
</FilesMatch>


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

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

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

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

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

Смотрите также похожие новости

Комментарии

16.02.2006 20:15:13
Antonello, да не скажи:)))
16.02.2006 19:24:56
Лучше б сам ЧПУ выложили...
16.02.2006 18:43:56
Eduard, это то ясно что не для красоты. HTML конечно же поисковики понимают лучше, хотя самые популярные к ним относятся так же как и к PHP. Вот мне хочется для красоты. Чтобы было в примеру так:
http://mysite.ru/Files/
http://mysite.ru/Forums/
http://mysite.ru/Account/
Только еще вопрос: можно ил чтобы было все в нижнем регистре, или придется переименовывать модули?
Т.е. гужно получить:
http://mysite.ru/files/
Так вот:)))
3.24

3.24
Почему мы зделали так: http://www.slaed.net/Forums.html
Отвечю, не для запоминаемости ссылок, а для лучьшей индексации сайта поисковыми системами.

Из моего личного опыта, простые пользователи интернета с трудом запоминают адрес сайта, не говаря уже о глубоких ссылках. Поэтому не вижу смысла сокрашать до придела и извращаться над системой и сервером.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
16.02.2006 17:04:15
Eduard, надобло про ваш написать вариант:))) Вообще мне не нравятся ссылки, где пишется расширение, т.е. такие:

http://slaed.net/Forums.html
http://slaed.net/Files.html

Но нравятся такие:

http://slaed.net/Forums/
http://slaed.net/Files/

Eduard, такое можно же сделать???

P.S. Как понять 1 и 4 варианты совмещенные, что от первого, что от четвертого? Хочется тоже Мини-ЧПУ, но т.к. я написал:)))
16.02.2006 16:37:09
Eduard :у меня ссылки такие например
http://сайт/Search.html
http://сайт/Jokes.html
http://сайт/index.html?name=News&new_topic=11
заместо index.php везде показывает index.html
это не вредит сайту Смайл - 17 Смайл - 17 Смайл - 17
3.24

3.24
RUSH, чётвёртый способ уневерсален, но при преобразовании всех ссылок производится высокая нагрузка. Мы отдали предпочтение Мини ЧПУ, пример на нашем проекте. Нагрузка минимальная. Принцып прост, четвёртый и первый вариант в объеденённом виде.

О сколько нам открытий чудных,
Готовит просвещенья дух,
И опыт, сын ошибок трудных,
И гений, парадоксов друг...
16.02.2006 11:39:11
Интерестно. Использовать конечно же нужно четвертый способ, насколько я знаю.

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

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

Технологии

PHP MySQL HTML 5 CSS 3 jQuery jQuery UI

Контакты

  • D-49179, Deutschland
    Ostercappeln, Im Siek 6
  • +49 176 61966679

  • https://slaed.net
Идеи и предложения
Обратная связь