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

mod_rewriteДанном посте я расскажу Вам про интересную функцию mod_rewrite с примерами. Для тех кто не в курсе что такое mod_rewrite советую почитать про ЧПУ на Википедии.
Вот короткая справка: Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Ниже приведены несколько примеров использования данного модуля, которые помогут вам разобраться с основыми ЧПУ:


1) Педелываем «test.php?id=12» в «test-12.»

Это простое перенаправление, в котором расширение .php спрятано из адресной строки браузера и динамический УРЛ (с знаком вопроса «?») преобразован в статический адрес

RewriteEngine on
RewriteRule ^test-([0-9]+)\.html$ test.php?id=$1


2) Педелываем «test.php?id=12» в «test/tovar/12.html»

Эксперты SEO всегда предлагают показывать главное ключевое слово в УРЛе. В пример Вы можете видеть название продукта в УРЛе.

RewriteEngine on
RewriteRule ^test/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ test.php?id=$2


3) Перенаправление адресов без www URL на адреса с www

Если Вы введете .com в браузере, Вас перенаправит на www..com. Для проделывания такой же операции на Вашем сайте добавьте следующий код в файл :

RewriteEngine On
RewriteCond %{HTTP_HOST} ^world-blog\.ru$
RewriteRule (.*) http://www.world-blog.ru/$1 [R=301,L]

УРЛ сайта, конечно же, поменяйте на свой. Для чего делать такой редирект? Чтобы избежать дублирования сайта поисковиками с www и без www.

4) Педелываем «world-blog.ru/user.php?username=xyz» в «world-blog/xyz»

В файл .htaccess добавляем следующие строки:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)$ user.php?username=$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ user.php?username=$1


5) Перенаправление домена на новый поддомен или папку.

Допустим, Вы сделали редизайн на сайте и обновленный сайт находится в папке “new” в корне сайта. То есть новый сайт доступен по адресу “world-blog.ru/new”. Перенос файлов из одного места в другое может быть довольно трудоемким процесом, так что просто добавьте следующие строки в файл .htaccess и разместите его в корневой папке:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^world-blog\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.world-blog\.ru$
RewriteCond %{REQUEST_URI} !^/new/
RewriteRule (.*)   /new/$1

Теперь при обращение к «www.world-blog.ru» все файлы будут браться из “test.com/new”

На этом всё. Спасибо за внгимание.

Запись навигация

Top