— Блог Арт-директора

Archive
Tag "htaccess"

Сегодня все привыкли к приянтному на глаз формату URL (человеко понятным урлам).

Большинство разработчиков поступают просто:

создают шаблон в htaccess файле для mod_rewrite модуля apache и все работает.

Но что делать, если шаблон URLа может изменятся (например, сайт может отлично работать в режиме: http://site.com/page, но при этом, для поддержки языков, должен работать и в формате: http://site.com/ru/page, при этом показывая те же данные).

Или другой пример: разные страницы сайта обрабатываются разными скриптами, при этом количество фактических параметров, полученных через строку браузера у скриптов разное (http://site.com/?page=index&id=12 и http://site.com/?page=photos&album=2&p_id=12&…)

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

Что же делать в этом случае?

Для этого есть отличное решение:

  1. В файле htacces в корне сайта устанавливаем редирект всех запросов на один файл php (index.php, например)
  2. В файле index.php настраиваем обработку строки запроса.

Получается что-то вроде своего собственного mod_rewrite, заточенного под собственные требования.

htaccess

[sourcecode language='cpp']
RewriteEngine On
#Подкулючаем модуль mod_rewrite

RewriteCond %{SCRIPT_FILENAME} !-f
#Отключаем редирект запросов, если запрос идет к существующему файлу

RewriteCond %{SCRIPT_FILENAME} !-d
#Отключаем редирект запросов, если запрос идет к существующей папке

RewriteRule ^(.*)$ index.php/$1
#Переводим все запросы на index.php
[/sourcecode]

php

[sourcecode language="php"]

< ?php

$url= $_SERVER['REQUEST_URI'];  //Получаем полную строку запроса к сайту

$urla=explode('/',$url);  //Разбиваем строку на параметры

print_r($urla);  //Выводим на экран (временно)

?>

[/sourcecode]

Теперь у нас есть массив всех параметров, которые пришли на сайт от посетителя. То есть теперь мы можем вызвать скрипт вывода на экран данных, передав в него массив параметров.

Допустим 1-й параметр — это название раздела сайта (новости/фотогалерея/форум). А параметры после первого (их точное количество нам не известно) используются уже непосредственно модулями, выполняющими вывод новостей или фотографий или форума.

Тогда по 1-му параметру мы определям модуль, который должен начать работу, и передаем ему массив параметров, которые он уже самостоятельно обрабатывает.

Например:

Входящая строка: http://site.com/news/21/12/2008/

Получили в файле index.php:

[sourcecode language="php"]

['news','21','12','2008']

[/sourcecode]

Проверяем какой модуль вызвать:

[sourcecode language="php"]

if ($urla[0]==’news’)

$mod_news->show($urla);

[/sourcecode]

и передаем в него параметры.

Все. Задача выполнена. Сайт может получать любое количество параметров.

Read More

Сегодня трудно найти сайт без ЧПУ (человеко-понятные УРЛы — страницы сайта, будучи динамически генерируемыми имеют статический адрес (статический для глаза посетителей и поисковых ботов)).

Для достижения этого эффекта используют mod_rewrite правила для Apache. Эти правила пишут в файлик .htaccess в корне сайта (или в любой другой папке, где нужно применить правило).

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

Read More
207220