Как сделать ЧПУ ссылки на PHP сайте


Делаем ЧПУ на PHP и HTML сайте

ЧПУ (четко просматриваемые урлы) уже давно влились в интернет движение, а теперь еще и pro-движение сайтов.

Создание ЧПУ ссылок на PHP сайте

Создание ЧПУ ссылок на PHP сайте

Сегодня я хочу привести пример создания ЧПУ ссылок на простом PHP сайте. 

Не смотря на то, что каждый вебмастер расшифровывает аббревиатуру ЧПУ по своему, смысл этого понятия не теряется. В целом оно (понятие) обозначает: Человеко Понятные Урлы (т. е. ссылки:)

Тексты URL ссылок очень хорошо понимаются поисковыми роботами, поэтому свои ЧПУ я обычно составляю из ключевых слов но только на английском. Это, как вы догадываетесь, более чем благоприятно влияет, как на внутреннюю оптимизацию сайта, так и на внешнее поисковое продвижение интернет проекта, соответственно.

Какие ЧПУ ссылки лучше, с html или без? 

Как мне видится, вопрос этот больше риторический, однако ссылки оканчивающиеся на .html выглядят более привычно и эстетично, чем когда на конце просто слеш (/).

Но это чисто мое, субъективно-индивидуальное представление, которое собственно не на что и не претендует. :)

На этом я наверное закончу свою теорию, и перейду непосредственно к реализации, т. е. практике. 😉

Создание ЧПУ ссылок на PHP

Во время обсуждения статьи о создании простого движка сайта на PHP и Html, пользователем Ом, была косвенно затронута тема создания и преобразования урлов вида:

index.php?act=news

в более, человеком понятные: (о ботах я вообще молчу)

 news.html

так они согласитесь, выглядят весело и интересно более привлекательно. :)

Поэтому я решил немного доработать пример, и написать статью о создании ЧПУ на простом ПХП сайте, движок которого состоит из htm страниц.

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

Создание ЧПУ в два этапа:

1. Создание корректных (статических) урлов средствами ПХП.

К сожалению файл .htaccess хоть и является от части магическим, но увы сделать динамические линки, статическими не в его компетенции. Ну разве что с помощью редиректа, но это, с точки зрения SEO, как вы догадываетесь не есть гуд. 

2. Преобразование статических ЧПУ, обратно в динамические, средствами магического файла локальной конфигурации веб сервера .htaccess.

А вот эта операция будет под силу файлу .htaccess.

За вывод ссылок у нас отвечает файл links.htm, который находится в папке /template, открываем его на редактирование и меняем вывод урлов:

<?
// создаем массив url
$links = array("news","download","story","contacts");
//инициализируем переменную $encore
$encore"новостя";
//которая отвечает за вывод анкоров
foreach ($links as $id)
//запускаем цикл перебора массива foreach
//и соответствующим образом назначаем анкоры
{
if ($id=="news")
{$encore="новости";}
if ($id=="download")
{$encore="разработка";}
if ($id=="story")
{$encore="история";}
if ($id=="contacts")
{$encore="контакты";}
//выводим урлы в htm документе
echo "<li><a href='/".$id.".html'>".$encore."</a></li>";
}
?>

Теперь осталось только немного переделать скрипт index.php, таким образом:
if (isset($_GET['id']))
{
$file='template/download.html';
if ($_GET['id']==news.'.html')
{$file = 'template/news.html';}
elseif ($_GET['id']==download.'.html')
{$file = 'template/download.html';}
elseif ($_GET['id']==story.'.html')
{$file = 'template/story.html';}
elseif ($_GET['id']==contacts.'.html')
{$file = 'template/contacts.html';}
else
{$file = 'template/error.html';}
include($file);
}

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

Для этого необходимо задействовать файл .htaccess.  Для включения модуля Apache mod_rewrite используется директива  RewriteEngine с параметром On.

RewriteCond определяет условия преобразования.

RewriteRule собственно их и выполняет.

Можно еще в htaccess добавить редирект 301, с  index.php?id=news на главную, для того, чтобы не создавать дубли, вводя в заблуждение поисковых роботов. Ведь сделать сайт это одно, а оптимизировать для последующего, успешного продвижения, это совершенно другое.

Даже не смотря на то, что алгоритмы поисковых роботов изменяются с регулярным постоянством, есть основы поискового продвижения, которым необходимо следовать.   А по сему, не буду далеко, как говорится уходить от темы, и перейду ближе к телу документа .htaccess.

В целом должен получится вот такой код:

# Главная ссылка в корневой директории
DirectoryIndex index.php?id=news.html

# Включаем mod_rewrite
RewriteEngine On

# Редирект с /index.php на /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ / [R=301,L]

# если REQUEST_FILENAME не является файлом
RewriteCond %{REQUEST_FILENAME} !-f

# и не директория т. е. папка
RewriteCond %{REQUEST_FILENAME} !-d

# трансформируем статические линки в динамические
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]

Скачать бесплатно улучшенный движок сайта на ПХП можно здесь

P.S. Самостоятельно создавая интернет проект, даже простую визитку из десяти страниц, важно помнить, что его структура должна быть законченной. Стараясь требовать к себе, как можно меньше внимания со стороны конечного пользователя.

Ому (отдельный) респект. 😉