Mod Rewrite (Статей: 11)

для начала создадим файл .htaccess и поместим туда следующий код

RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_FINISH} !^$
RewriteRule ^ - [L]
#Дальше сколько угодно правил
RewriteRule ^/?([\w]+)$ /
router.php?page=$1 [E=FINISH:1,L,QSA]

далее создадим файл router.php и поместим туда этот код


<?php

include 'header.php';//шапка сайта

//существует ли запрашиваемый файл? если нет то назначаем файл по умолчанию index
$file = file_exists(ROOT.'/pages/'.$_GET['page'].'.php') ? $_GET['page'] : 'index';


//загружаем файл
include 'pages/'.$file.'.php';

include 'footer.php';
exit;

к примеру:
при запросе site.ru/forum будет запрошен файл pages/forum.php

ЭТО ПРОСТОИ РОУТЕР ДЛЯ НОВИЧКОВ

Site: Портфолио программиста
Автор: Dmitry Kokorin (05.11.14 / 20:00)
Просмотры: 1370
Комментарии (11) »
Зачастую при разработке сайта мы сталкиваемся с проблемой ЧПУ( ЧеловекоПонятныхУрл ).
В данной статье представлен вариант устранения ошибки 500 Internal Server Error.
Попробовал и я на своей колокольне такую ошибку, много раз вскипал мозг и наконец-то "добрые люди пнули в направлении на юг".
Суть в том что mod_rewrite "ищет" подходящий шаблон под наш запрос, пока не получит нужный, бесконечно (по крайней мере на хостах обычно стоит тайм-аут, благодаря которому и срабатывает ошибка 500), но благодаря маленькой хитрости можно устранить это дело.
НАЧНЕМ:

RewriteEngine On
RewriteBase /
RewriteCond %{ENV:REDIRECT_FINISH} !^$
RewriteRule ^ - [L]
#Дальше сколько угодно правил
RewriteRule ^/?([a-z]+)$...[/L]

Автор: Dmitry Kokorin (05.11.14 / 19:35)
Просмотры: 723
Комментарии (0) »
Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов, с адресом вида http://www.my-site.com.ua/cgi-bin/download/get-files.cgi. Для обработки файла нужно ввести категорию файла (к примеру, "мои файлы" — id=my-files) и название (допустим, name=My_Editor), после чего у нас получится что-то вроде http://www.my-site.com.ua/cgi-bin/download/get-files.cgi?id=my-files&name=My_Editor. Согласитесь, такой вид крайне неудобен для конечного пользователя, особенно если адрес ему приходится вводить вручную. Избежать подобных сложностей можно с помощью инструмента mod_rewrite из стандартного набора сервера Apache (http://www.apache.org/). Он позволяет созданную выше конструкцию преобразовать в запись вроде http://www.my-site.com.ua/my-files/dn_pg=My_Editor. Или вот еще один пример. Допустим, вам надо...
Автор: Андрей Сергеевич (14.09.11 / 11:43)
Просмотры: 1264
Комментарии (4) »
R- Перейти на новый URL, с дополнительным кодом (см. ниже)..
F - Запретныей (Отпровляет заголовок 403)
G - Gone (не существует)
P - Прокси
L - Последнее правило
N - Следующая (т.e. Перезагрузка правила)
C - Chain
T = mime-type - Установить Mime Type
NS - Пропустить, если есть внутренний подзапрос
NC - Не учитывать регистр
QSA - Добавить строку запроса
NE - Do not escape output
PT - Пройдя через
S = x - Перейти x следующих правил
E = var:value - Установить значение переменной окружения "Var" на "value".
Кривой - но все же перевод!
Автор: Сааааа-нёёёёё-к (03.09.10 / 15:10)
Просмотры: 1925
Комментарии (1) »
в корневой директории создаем .htaccess с содержанием:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.вашсайт\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\.вашсайт\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/subdomains
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.вашсайт\.com(.*) /subdomains/$1$2
RewriteRule ^subdomains\.(.*) /subdomains/$1

и файл httpd.conf с содержанием:


<Directory /domains/вашсайт.com/html>
Options FollowSymLinks
AllowOverride All
</Directory>
<VirtualHost вашсайт.com>
ServerAdmin [email protected]вашсайт.com
ServerAlias *вашсайт.com
Virtual DocumentRoot /domains/вашсайт.com/html/%1
ServerName вашсайт.com
ErrorLog logs/вашсайт.com-error_log
CustomLog logs/вашсайт.com-access_log common
</VirtualHost>

В корне создаем папку subdomains
Пример:
хотим получить поддомен umax.вашсайт.com
1 - идем в subdomains и создаем там папку umax
2 - всё!
Автор: Удаленный (11.06.10 / 17:26)
Просмотры: 2087
Комментарии (8) »
Часто хостинговые провайдеры накладывают ограничение на количество уикальных сайтов, и зачастую под это ограничение попадают и поддомены. Данное ограничение можно обойти средствами .htaccess. Например мы хотим направить поддомен forum.yourdomain.net на директорию ~/forum для этого необходимо направить нужные поддомены на папку с остновным сайтом и создать вложенную директорию например forum

RewriteEngine on
RewriteCond %{HTTP_HOST} ^forum\.yuordomain\.net$ [NC]
RewriteCond %{REQUEST_URI} !^/forum/$ [NC]
RewriteRule (.*) /forum/$1 [L]

Автор: Удаленный (11.06.10 / 17:22)
Просмотры: 1192
Комментарии (2) »
Сайт перенесен с одного домена на другой с domain.com на domain2.com

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain\.com$ [R=301,1]
RewriteRule ^(.*)$ http://www.domain2.com/$1

Автор: Удаленный (11.06.10 / 17:20)
Просмотры: 1181
Комментарии (2) »
Перенаправление несуществующих URL на другой веб-сервер
RewriteEngine on
RewriteBase /
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) http://webserverB.dom/$1

Автор: Удаленный (11.06.10 / 17:18)
Просмотры: 1113
Комментарии (1) »
Необходимо запрос любой страницы сайта отправлять на одну (будет написано что сайт временно ен доступен), но в то же время нужно оставить его открытым для поисковых машин. То есть для клиентов сайт закрыт, а для индексации - открыт.

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^crawler.* [NC,OR]
RewriteRule ^/$ - [L,R]

Автор: Удаленный (11.06.10 / 17:16)
Просмотры: 1214
Комментарии (0) »
Указание доступа к сайту по времени
RewriteEngine on
RewriteCond %{TIME_HOUR}%{TIME_MIN} > 900
RewriteCond %{TIME_HOUR}%{TIME_MIN} < 1800
RewriteRule .* -
Автор: Удаленный (11.06.10 / 17:15)
Просмотры: 1258
Комментарии (3) »
Топ статей / Облако тегов / Поиск / Авторы