Красивые ссылки — это есть гуд (ЧПУ)

Когда программист пишет веб проекты, то он рано или поздно приходит к тому что ссылки должны быть красивые и запоминающиеся. Ссылки типа /content/post12.html лучше понятны для пользователей, а также являются более лучшим решением для поисковых систем.
В это статье я расскажу как создать функцию обработки ссылок и перевода их в режим ЧПУ.

Создадим функцию mod_rewrite(). Такое название функции я выбрал не с проста. Mod_rewrite — есть модуль в апаче который осуществляет работу по преобразованию ссылок. Углубляться в его работу особо не будем.

$mod_rewrite = true; Обьявление этой переменной является вспомогательным моментом. Ведь если вы хотите использовать обычные ссылки, то вам придется менять всю функцию.

Далее мы проверяем насколько наша ссылочка соответствует правилу создания чпу ссылок.

preg_match(‘#^\/[a-zA-Z\.]+\?[a-zA-Z]+\=[a-zA-Z]+$#i’,$url)

Затем нам остается играть со строками и выделять нужные её части.

$url=substr($url,1);
$url=substr($url,strpos($url,'?')+1);
$variable_name = substr($url,0,strpos($url,'='));
$variable_val = substr($url,strpos($url,'=')+1);

В конечном итоге мы получим функцию:

$mod_rewrite = true;
function mod_rewrite($url){// Функция преобразования URL в ЧПУ
global $mod_rewrite;
if ($mod_rewrite){
if (preg_match('#^\/[a-zA-Z\.]+\?[a-zA-Z]+\=[a-zA-Z]+$#i',$url)){
// Строка типа /index.php?type=text
$url=substr($url,1);
$url=substr($url,strpos($url,'?')+1);
$variable_name = substr($url,0,strpos($url,'='));
$variable_val = substr($url,strpos($url,'=')+1);
return '/'.$variable_name.'/'.$variable_val.'.html';

}else {return $url;}

}
}

Но на этом дело не заканчивается. Теперь нам надо прописать правила в файле .htaccess, чтобы апаче правильно переводил ссылочки.

Для такого типа ссылок правило в .htaccess будет следующим:

RewriteEngine on
Options +FollowSymlinks
Options -Indexes
RewriteCond %{REQUEST_URI} !(admin)

RewriteRule ^type/([a-zA-Z0-9]+).html$ index.php?type=$1 [QSA,L]

В итоге ссылка ввида /index.php?type=text будет преобразована в /type/text.html . Так более красиво правда ?))

Пример использования:

<a href=»<? echo mod_rewrite(‘/index.php?type=text’); ?>»>test</a>

// Проверка того, правильно ли сформирован запрос. Если //показывает, то что вы передавали в нашу функцию, кроме //имени файла, то все ок
echo $_SERVER[‘QUERY_STRING’];

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

Только профессионалы должны производить строительство коттеджей Калининград, а таковыми являются специалисты компании АльпСити.

Один ответ на “Красивые ссылки — это есть гуд (ЧПУ)”

  1. Ты кое что забыл, так это вызыв существующих файлов. Иначе говоря в ht нужно было дописать:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA]

    и пото юзать $_SERVER[‘REDIRECT_URL’];

Добавить комментарий