Apache mod_rewrite

Отличная шпаргалка по .htaccess и по оформлению и по информации.
Cмотреть когда что-то подзабыли. Показаны примеры на распрастраненные вопросы.

Синтаксис регулярных выражений

:^ начало строки
$ конец строки
. (точка) любой символ
(a|b) a или b
(…) выбор группы
[abc] любой символ из диапазона (a или b или c)
[^abc] ни один символ из диапазона (ни a или b или c)
a? символ a 1 или 0 раз
a* символ a 0 или более раз
a+ символ a 1 или более раз
a{3} символ a точно 3 раза
a{3,} символ a более 3 раз
a{3,6} символ a от 3 до 6 раз
!(pattern) ! — отрицание

Флаги RewriteRule

R[=code] Перенаправление на новый URL по заданному коду
F Forbidden (отправляет заголовок 403)
G Больше не существует (Gone)
P Прокси (Proxy)
L Последнее правило
N Следующий
C Chain
T=mime-type Установка mime-type
NS Skip if internal sub-request
NC Не зависимый от регистра символов
QSA Append query string (Прибавляет строку запроса)
NE Не отменяет результат
PT Через
S=x Пропустить следующие x правил
E=var:value Устанавливает переменную окружения «var» в «value».

Примеры mod_rewrite

# Сайт перенесен с одного домена на другой
# с domain.com на domain2.com
RewriteCond %{HTTP_HOST} ^www.domain.com$ [R=301,1]
RewriteRule ^(.*)$ http://www.domain2.com/$1
# Страница временно перемещена
# domain.com/page.htm на domain.com/new_page.htm
RewriteRule ^page.htm$ new_page.htm [R,NC,L]
# Человекопонятный URL (ЧПУ)
# domain.com/category-name-1/ из domain.com/categories.php?name=category-name-1
RewriteRule ^([A-Za-z0-9-]+)/?$ categories/php?name=$1 [L]
# Человекопонятный URL (ЧПУ)
# domain.com/articles/title/5/ из domaim.com/articles.php?name=title$page=5
RewriteRule ^articles([A-Za-z0-9-]+) /([0-9]+)/?$ article.php?name=$1&page=$2 [L]
# Блокирование спама по HTTP_REFERER
RewriteCond %{HTTP_REFERER} (weight) [NC,OR]
RewriteCond %{HTTP_REFERER} (drugs) [NC]
RewriteRule .* — [F]

RewriteCond FLAGS

NC Не зависимый от регистра символов
OR Allows a rule to apply if one of a series of conditions are true

Коды ответа сервера

301 Moved permanently (Перемещен постоянно)
302 Moved temporarily (Перемещен временно)
403 Forbidden (Запрещено)
404 Not found (Файл не файден)
410 Gone (Больше не существует)

Переменные сервера

Формат
%{NAME_OF_VAR}

HTTP Headers (заголовки)
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT

Request (переменные запроса)
REMOTE_ADDR
REMOTE_HOST
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
PATH_INFO
QUERY_STRING
AUTH_TYPE

Server (переменные сервера)
DOCUMENT_ROOT
SERVER_ADMIN
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE

Время
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
TIME

Специальные
API_VERSION
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
IS_SUBREQ

Директивы
RewriteEngine
RewriteOptions
RewriteLog
RewriteLogLevel
RewriteLock
RewriteMap
RewriteBase
RewriteCond
RewriteRule

Мы расскажем, что делает корпоратив оригинальным!
  • phpBB3 Внешняя авторизация
  • Установка и настройка PHP framework CodeIgniter.
  • .htaccess настройка доступа к хосту
  • Авторизация через клиентские SSL сертификатов.
  • 5 комментариев на “Apache mod_rewrite”

    1. Юрий:

      спасибо, очень полезно…

    2. Евгений:

      http://saintist.ru/2009/10/26/phpbb-ajax-chat/comment-page-1/#comment-274
      Привет
      Какая цена чата?
      Форумы не грузит?

    3. saintist:

      не грузит

      писал чат три года назад, у меня соответственно ничего не сохранилось ))

      если интересно могу с нуля написать, за 3 года нашел более элегантные решения

    4. Евгений:

      Давай спишемся.Напиши какие цены,во сколько встанет

    5. Евгений:

      saintist ну так что,возьмёшся,напиши мне на емэйл

    Оставить комментарий