Контакты RSS 2.0

Разделы Сайта:

Кубтеле - о компании
Инструменты SEO
FreeBSD
Администрирование
Centos администрирование
Windows администрирование
Программирование для web

Аккаунт

Популярное:

Материалы по web программированию › Создание ЧПУ в PHP
Одной из главных причин для использования PHP как серверного языка является возможность генерировать динамический контент. Обычно один скрипт генерирует множество страниц на основе входных параметров (переменных в URL).

Этот урок о том, как представить эти параметры в URL в чистом и дружественном виде для чтения человеком (ЧПУ - веб-адреса, удобные для восприятия человеком).

Если Вы не совсем понимаете о чём я, взгляните на следующий пример. Наш сайт (site.com) хранит каждый из своих уроков в таблице бд lessons. И сейчас мы могли бы сделать так, чтобы каждый отдельный урок был доступен по своему id.

Но это не лучший способ. Если люди прочитают большое количество уроков на сайте, то в истории адресной строки браузера будет куча URL с разными id и они не смогут вернуться к нужной статье. Людям придётся делать закладки или идти на главную страницу сайта и искать нужный урок.

Что ещё более важно, Вы не используете важные данные, которые поисковые машины учитывают, индексируя Ваш сайт. Вот пример ЧПУ:

http://site.com/lessons/funny-cats

В этом уроке я расскажу, как создавать ЧПУ в PHP. Мы рассмотрим несколько методов, а также преимущества и недостатки каждого из них.

Используем Mod Rewrite для ЧПУ

Первый метод, который мы рассмотрим – модуль mod_rewrite, который поставляется с Apache. Этот модуль работает путём сопоставления запрошенных URL с набором предопределённых правил, а также передаёт данные в нужный скрипт в нужном формате.

Допустим, у нас есть скрипт news.php в корневой директории сайта (то есть он доступен по адресу http://site.com/news.php). Этот скрипт ответственен за вывод конкретной новости из бд, которая выбрана с помощью параметра news_id в URL.

Так что если бы Вам понадобилось получить доступ к статье с id 67, пришлось бы использовать этот адрес:

http://site.com/news.php?news_id=67

Но мы хотим улучшить ситуацию и использовать такой URL: http://site.com/news/67.html (это только для примера).

Используя mod_rewrite, добиться этого можно одним простым правилом. Нужно прописать в httpd.conf или в .htaccess файле в директории сайта следующее:
RewriteEngine on
RewriteRule ^/news/([0-9]+)\.html /news.php?news_id=$1



Используя регулярное выражение выше, мы находим все запросы к сайту, и преобразуем в формат /news/news_id.html. Участки, заключённые в скобки сохраняются в переменных, таких как $1 или $2 (в нашем случае только $1).

В скрипте news.php мы просто берём news_id параметр также, как бы мы это делали и в обычном случае:
$news_id = $_GET['news_id'];



ЧПУ в PHP с помощью Forcetype директивы Apache

Альтернатива использованию mod_rewrite – использовать директиву ForceType. Это позволит использовать php-скрипт без .php расширения. Обычно веб-сервера настроены так, что php-скрипты должны заканчиваться на .php, чтобы другие скрипты (такие как .html файлы) не обрабатывались PHP.

Возвращаясь к нашему примеру, вместо скрипта news.php в корневой директории, наш скрипт будет называться просто news. К нему можно будет получить доступ вот так: http://site.com/news.

Используя следующий код в httpd.conf или в .htaccess, файл news будет обработан на сервере как PHP файл:
<Files news>
    ForceType application/x-httpd-php
</Files>



Теперь, когда мы делаем запрос по адресу: http://site.com/news/67.html, то напрямую попадаем на статью. А часть /67.html нам нужно спарсить. Она хранится в серверной переменной PATH_INFO.
echo $_SERVER['PATH_INFO'];
// выводит '/67.html'



Так что мы можем воспользоваться регулярным выражением, чтобы выделить число 67 из строки. Вот регулярка, которая ищет строку, которая точно имеет вначале знак слэша, а потом число, замыкаемое .html:
$path = $_SERVER['PATH_INFO'];

// $matches[0] хранит всю строку, а $matches[1]
// хранит строку соответствующую регулярному выражению в скобках,
// то есть то, что нам нужно
preg_match('!^/(\d+)\.html$!', $path, $matches);
 
// приводим строку в число
$news_id = (int) $matches[1];



Ну вот и всё. Теперь Вы можете использовать $news_id соответственно в скрипте. Конечно, если бы путь был в неправильном формате, $news_id был бы равен 0 после приведения к int. То есть, Вы будете в безопасности, если скрипт обратится к бд, даже если такой статьи не существует.

Вывод

В этой статье мы изучили несколько способов создания ЧПУ. На самом деле, я думаю, что поисковые системы, такие как Google, конечно же, проиндексируют страницы, основанные на GET параметрах. Однако помните, что использование ЧПУ – очень хороший тон в глазах поисковиков.
скачать dle 10.3фильмы бесплатно
Добавил: admin › 31-12-2014, 11:50
› 0 комментария › печатькатегория
Другие новости по теме
  • Функции обратного вызова в PHP
  • Перевод текста, используя Google Translate API и PHP, JSON и cURL
  • Сессии в PHP
  • Скрипт валидации mail.ru на php
  • Как добавлять дополнительные разделы новостей на сайт инструменты seo

  • Кубтеле 350000, Россия, Краснодарский край, , город Краснодар,улица Айвазовского, д. 94, корп. А
    Продвижение сайтов,Регистрация доменов,Компьютерная системная интеграция
    8(861) 299-02-62, +7(903) 449-666-8