Apache Правила перезаписи Xiangjie

11 апреля 2009 по SLJ | Категория: Apache , PHP | 22 Комментарии Размер шрифта: А. А.

До открытия:
Я хочу сказать, эта статья, когда я только тронь переписать документацию обучения, должны быть воспроизведены, но здесь я не хочу, чтобы указать исходный адрес, поскольку конфигурация статье дается для большинства экспериментов не правы. Необходимость первоначальный текст в Google поиск по теме "Правила перезаписи Apache 详解"
К счастью, я понимаю, регулярные выражения, исходный код можно переписать через свое собственное понимание того, что и в состоянии удовлетворить требованиям поставленных задач, и Lenovo добавила спрос на примере.
Это после того, как изменение эффективно после эксперимента, если ошибка все равно происходит, пожалуйста, удалите # и 500 комментариев позднее (и, возможно, некоторые из окружающей среды не поддерживает китайский перевод), если они еще ошибкой, пожалуйста, дайте мне сообщение.

1, правила перезаписи Описание:

Rewirte основная функция заключается в реализации URL из прыжка, она основана на Perl язык регулярных выражений. Может быть основана на уровне сервера (httpd.conf) и каталогов уровня (. Htaccess) в двух направлениях. Для того чтобы использовать переписать модуль, необходимо сначала установить или загрузить переписать модуль. Есть два пути, когда одна непосредственно составлен Apache переписать модуль установлен, когда другая является Apache собран с режима DSO для установки Apache, а затем использовать apxs установить источник и переписать модуль.

На основании уровне сервера (httpd.conf) Есть два пути, один находится в непосредственном использовании глобальной httpd.conf RewriteEngine на открытые функции перезаписи, а другая используется на местном RewriteEngine на открытые функции перезаписи, следующие меры: будет свидетельствуют о необходимости обратить ваше внимание на необходимость в каждом VirtualHost используется RewriteEngine на открытые функции перезаписи. В противном случае, Есть не VirtualHost RewriteEngine на него в правила не вступили в силу.

На основании каталога уровня (. Htaccess), следует отметить, что это открыть эту собственность каталог FollowSymLinks и в. Htaccess, чтобы объявить о RewriteEngine.

2 Например:

Пример One. Вот определение виртуальных хостов в правилах. Функция на запрос клиента принимающей префикс не www.kiya.cn 70.40.213.183 и есть переход к http://www.kiya.cn префикс хозяина, избежать же содержание страниц более чем одной точки имя домена, таких как HTTP: / / kiya.cn.

NameVirtualHost 70.40.213.183:80
ServerAdmin slj@kiya.cn
DocumentRoot "/ Сети"
Имя_сервера kiya.cn

RewriteEngine On # включить функцию rewirte
RewriteCond% (HTTP_HOST)! ^ Www.kiya.cn [NC] # заявление хостов просьбе префикс не www.kiya.cn, что [NC] означает чувствительны к регистру
RewriteCond% (HTTP_HOST)! ^ 70.40.213.183 [NC] # заявлению Клиента префикс хост не просить для 70.40.213.183, что [NC] означает чувствительны к регистру
RewriteCond% (HTTP_HOST)! ^ $ # Заявление хостов просьбе префикс не пустой
RewriteRule ^(.*) http://www.kiya.cn/ [L] # означает, что если клиент просит множество префиксов отвечают вышеуказанным условиям, то перейти непосредственно к http://www.kiya.cn/ , [L] означает немедленное прекращение операций перезаписи, и больше не применяются другие правила перезаписи. Где .* не URL не содержит весь матч строки символов () скобки, функции всех символов, чтобы знак, с тем чтобы облегчить применение назад. Является ли упоминание в передней части (.*) характер.

Пример второй. En.sicasoft.com доменное имя будет введено Перейти к www.sicasoft.com

RewriteEngine на
RewriteCond% (HTTP_HOST) ^ en.sicasoft.com [NC]
RewriteRule ^(.*) http://www.sicasoft.com/ [L]

Дела 3. Бегов программного обеспечения в последнее время изменилось название, новые www.sicasoft.com доменное имя, более короткие легко запомнить. Тогда нужен оригинал ss.kiya.cn доменных имен и форумах, где адрес ss.kiya.cn / BBS /, направленных на новое доменное имя, чтобы пользователи могли найти и сделать оригинальный форум URL-прежнему существуют эффективные, но не 404 не найден такие, как оригинальный http://ss.kiya.cn/bbs/tread-60.html, новое доменное имя, он будет оставаться в силе после нажатия ожидает http://bbs.sicasoft.com/tread-60. HTML и другие страницы, такие как оригинальные http://ss.kiya.cn/purchase не идти на второй bbs.sicasoft.com уровне домена / продаже, а к www.sicasoft.com / продаже
В соответствии с требованиями настоящего перенаправлен должно быть написано:

RewriteEngine On
RewriteCond% (REQUEST_URI) ^ / BBS /
RewriteRule ^ BBS /(.*) http://bbs.sicasoft.com/ $ 1 [R = постоянный, L]
RewriteCond% (REQUEST_URI)! ^ / BBS /
RewriteRule ^(.*) http://www.sicasoft.com/ $ 1 [R = постоянный, L]

3.Apache mod_rewrite правила перезаписи символ список

1) R [= код] (форс-перенаправление) перенаправить силу внешних сил с http://thishost [строка замены: thisport] / префикс перенаправлять на внешний URL. Если код не указан, будет использоваться по умолчанию 302 HTTP код статуса.
2) F (сила URL запрещенным), чтобы отключить URL, возвращение 403HTTP код состояния.
3) G (сила URL с отъездом) в силу URL GONE, возвращение 410HTTP код состояния.
4) P (форс-прокси), обязательное использование прокси-экспедирования.
5) L (последнее правило) показывает, что нынешнее правило, является последним правило, остановить анализ после переписать правила.
6) N (следующий раунд) вновь начал с первого запуска процесса переписывания правил.
7) C (прикованный со следующим правилом), связанные с правило, согласно

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

8) T = MIME-тип (тип силы MIME) обязательного типа MIME
9) NS (используется только если нет внутреннего подзапроса) не только для внутреннего подзапроса
10) NC (коем случае) не чувствительны к регистру
11) QSA (строка запроса добавить) строку запроса прилагается
12) NE (URI не избежать продукции), не выход избежать специальных символов, таких как: RewriteRule / Foo /(.*) / бар? Arg = P1 3d% $ 1 [R, Н.] будет в состоянии исправить / Foo / зоопарк преобразования а / бар? агд = P1 = зоопарк
13) PT (пройти на следующий обработчик) прошли на следующий обработки, таких как:
RewriteRule ^ / ABC (.*) / Def $ 1 [PT] # будет переведен в / Def правил
Alias / DEF / Джи
14) S = пит (пропустить следующее правило (ы)), чтобы пропустить правило пит
15) E = VAR: VAL (установить переменную окружения), чтобы установить переменные окружения

4.Apache переписать пример,

URL перенаправления

Один пример:
В то же время отвечать следующим двум требованиям:
1. С http://www.zzz.com/xxx.php доступ к http://www.zzz.com/xxx/
Два. Http: / / www.zzz.com/user.php?username=yyy с http://yyy.zzz.com для доступа к функциям

RewriteEngine On
RewriteCond% (HTTP_HOST) ^ www.zzz.com
RewriteCond% (REQUEST_URI)! ^ User.php $
RewriteCond% (REQUEST_URI). PHP $
RewriteRule (.*). PHP $ http://www.zzz.com/ $ 1 / [R]
RewriteCond% (HTTP_HOST)! ^ Www.zzz.com
RewriteRule ^(.+)% (HTTP_HOST) [C]
RewriteRule ^([^.]+). zzz.com http://www.zzz.com/user.php?username = $ 1

Пример 2:

/ Type.php? Typeid =* -> / типа *. HTML
/ Type.php? Typeid =* и страницы =* -> / тип страницы * *. HTML

RewriteRule ^ / тип ([0-9] +). Сайтов $ / type.php? Typeid = $ 1 [PT]
RewriteRule ^ / тип ([0-9] +) страницы ([0-9] +). Сайтов $ / type.php? Typeid = $ 1 и странице = $ 2 [PT]

5. URL Rewrite использованием пользователей Apache мульти виртуальных серверов

Чтобы реализовать эту функцию, мы должны открыть доменное имя DNS сервера, резолюция доменное имя сковороде (или найти свое доменное имя поставщика услуг, сделать это). Например, я положил *. kiya.us и *. kiya.cn все решения в адрес IP 70.40.213.183 на меня.

Затем, взглянув в мою Apache виртуальные хосты на *. kiya.us настройки.

ServerAdmin webmaster@kiya.us
DocumentRoot / дом / WWW / www.kiya.us
Имя_сервера dns.kiya.us
ServerAlias dns.kiya.us kiya.us *. kiya.us
CustomLog / VAR / Журнал / HTTPD / OSA / access_log.log "общей
ErrorLog / VAR / Журнал / HTTPD / OSA / error_log.log "
AllowOverride None
Заказ отрицать, позволяют

# AddDefaultCharset GB2312

RewriteEngine на
RewriteCond% (HTTP_HOST) ^[^.]+. Кия. (Сп | нам) $
RewriteRule ^(.+)% (HTTP_HOST) $ 1 [C]
RewriteRule ^([^.]+). Кия. (Сп | нас )(.*)$ / главная / WWW / www.kiya.us / Сильван $ 3? Un = 1 $ и% (QUERY_STRING) [L]

В этих условиях, я *. kiya.cn и *. kiya.us корень документа установлен в / главная / WWW / www.kiya.us

Читайте дальше, здесь я настроить правила перезаписи URL.

RewriteEngine на # Открыть URL Rewrite Функция
RewriteCond% (HTTP_HOST) ^[^.]+. Кия. (Сп | нас) $ # соответствуют условиям, если пользователь вводит URL в имя хоста, похож на xxxx.kiya.us или xxxx.kiya.cn об осуществлении следующее предложение
RewriteRule ^(.+)% (HTTP_HOST) $ 1 [C] # пользователю ввести полный адрес (GET метод, за исключением параметров) в качестве параметра передается следующему правилу, [C] является правилом Сеть значит, что следующая серия
RewriteRule ^([^.]+). Кия. (Сп | нас )(.*)$ / главная / WWW / dev.kiya.us / Сильван $ 3? Un = 1 $ и% (QUERY_STRING) [L]
# Клавиша это один, используя аналитические выражения позволяют пользователю ввести URL-адрес, имя хоста сведения о пользователе, как параметр, который называется ООН годен / дом / WWW / dev.kiya.us скрипт каталога и в обратный путь, чтобы идти в ногу с пользовательского ввода входящих GET параметра. И указать, это последнее правило ([L] правило). Обратите внимание, что в этом предложении, после перезаписи на адрес, указанный на сервере, используя абсолютный путь, который входит в прыжок. Если этот URL http://xxxx форматов называются внешние прыжок. Внешние прыжок, а затем просматривать URL адреса браузера превратится в новый адрес, а также использовать внутренний скачок в адрес браузера не изменится, больше похоже на реальный виртуальный вторичный сервер доменных имен.

После перезагрузки сервера Apache установлен на это!

Обновление 1 мая 2009

Сегодня Интернет, чтобы кто-то задать вопрос:

Перепишите Анти-Daolian ищут не допускается www.im286.com www.chinaz.com Daolian обоих сайтах, другие сайты могут Daolian, как писать правила.

Форумы ответ:

RewriteEngine On
RewriteCond% (HTTP_REFERER) chinaz.com [NC]
RewriteCond% (HTTP_REFERER) im286.com [NC]
RewriteRule .* \. (Jpg | JPEG | GIF | PNG | | RAR ZIP | TXT | туз | поток | GZ | швейцарских франков) $ http://www.xxx.com/fuck.png [R, NC, L]

Обновление 7 мая 2009

Введение статьи: http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

Обновление 24 мая 2009

I, о необходимости в полной мере использовать бежать, как и в RewriteCond% (HTTP_REFERER) chinaz.com [NC] в chinaz.com в Чиназ \. Com
Ответ на этот вопрос, как может.

Во-вторых, сегодня, делает YOURcaddy.com (то, что я сделал в прошлом году PlanetCoachella деформации), когда хозяин на GoDaddy не может должным образом свою очередь, затем нашли проблему:
В HostMonster и моей машины,
RewriteRule ^ бизнес / ([^ \ .]+)$ бизнес / detail.php? Название = $ 1 [L]
Чтобы переписать. В принимающих Godaddy, заключается в следующем:
RewriteRule ^ бизнес / ([^ \ .]+)$ / бизнес / detail.php? Название = $ 1 [L]
Еще до конечного файла /
Теперь подумайте об этом, вероятно, из-за отсутствия назначенного RewriteBase, потому что в конце это не я снова испытать еще один день.

В-третьих, добавить два примера на судью User Agent и автоматически добавляются. Php расширение и автоматически изменится. Сайтов для. Например, расширение PHP:
1

RewriteEngine на
RewriteCond% (HTTP_USER_AGENT) ^ MSIE [NC, OR]
RewriteCond% (HTTP_USER_AGENT) ^ оперы [NC]
RewriteRule ^ .* - [F, L], где "-" означает отсутствие замены для IE и Опера браузеры посетителей будет запрещен доступ.

2

RewriteEngine On
RewriteBase / тест
RewriteCond% (REQUEST_FILENAME). PHP-е
RewriteRule ([^/]+)$ / испытание / $ 1.php
# Например: / тест / администратора => / тест / admin.php
RewriteRule ([^/]+) \. Сайтов $ / тест / $ 1.php [L]
# Например: / тест / admin.html => / тест / admin.php

Предельные каталог может отображать только фотографии
<IfModule Mod_rewrite.c>
RewriteEngine на
RewriteCond% (REQUEST_FILENAME)! ^ .* \. (GIF | JPG | JPEG | PNG | швейцарских франков) $
RewriteRule .* $ - [F, L]
</ IfModule>

Обновление 10 июня 2009

Добавлено переписывания частности расширение файла.

Перепишите некоторыми расширениями:
RewriteRule (.*. CSS $|.*. JS $) gzip.php? $ 1 [L]
Если вы хотите исключить ряд расширений:
RewriteRule! \. (J | ш | GIF | JPG | JPG | PNG | PNG | CSS | PDF | SWF) $ index.php

Похожие сообщения / Статьи

22 Комментарии

Я хочу комментировать
  • ВС Янга 14 июля 2010

    FollowSymLinks необходимо открыть каталог атрибуты?? Где открытым

    • SLJ 15 июля 2010

      Функции FollowSymLinks в httpd.conf

  • Лист 1 ноября 2009

    ErrorDocument 404 / 404.php ErrorDocument 500 / 404.php DocumentRoot "D: / WWW" ServerName все сайты RewriteEngine на RewriteCond% (HTTP_HOST) ^ [A-z0-9 \ -] + \. Abc \. Сп $ RewriteRule ^ /(.*)$ /% (SERVER_NAME) / $ 1 RewriteRule ^ / ([-z0-9 \ -] +) \. ABC \. сп /(.*)$ D: / WWW / $ 1 / $ 2 [L ] RewriteRule ^ .* $ / index.php [L] хостов 192.168.1.2 файл ...

  • LC. 16 октября 2009

    Мастер ~ ~ теги вопрос страницу 301 редирект. Все так www.liucheng.name/?tag=ncbi 301 до http://liucheng.name/tag/ncbi/. Htaccess, как писать его в ?

    • Применение 20 октября 2009

      RewriteRule ^/(.+)/(.+) http://www.liucheng.name/? $ 1 = $ 2 [R = постоянный, L], чтобы HTTP 301 с [R = постоянный, L] или [R = 301, L]

  • Охота 29 июля 2009

    RewriteEngine On RewriteCond% (REQUEST_URI) ^ / BBS / RewriteRule ^ BBS /(.*) http://bbs.sicasoft.com/ $ 1 [R = постоянный, L] RewriteCond% (REQUEST_URI)! ^ / BBS / RewriteRule ^ ( .*) http://www.sicasoft.com/ $ 1 [R = постоянный, L] Почему я пишу по мере приближения к машине я бы 2 / / например, первоначально http://www.sicasoft.com / стала http://www.sicasoft.com//

  • джунгли, 3 июня 2009

    Недавно компания изменила сервер, хотят apache2.x и tomcat6 интеграции в окне Server2003 окружающей среды, много данных, поиск, интеграция не очень гладко. Конечно, главная проблема достигается за счет Apache переписать функции доменного имени, такие как www.xxx.soft.com реальной точки www.soft.com / ххх ххх найти в соответствующей папке.

    • Кия 4 июня 2009

      Я пытался добиться этого функциональность переписать результаты не очень хорошие, скрипт на Пан-разрешение, а затем определить запрос в сценарии, или перейти непосредственно связанные с осуществлением дисплей лучше, в настоящее время преобладала.

  • Гэвин 26 мая 2009

    Здравствуйте, недавно переименованного в сайт, я хочу, чтобы перейти на сайт bbs.BBB.com bbs.AAA.com, www.AAA.com к www.BBB.com AAA.com к BBB.com я пишу эти строки : (WWW успешной, BBS недействительными) ...

    • Кия 27 мая 2009

      Попробуйте RewriteCond% (HTTP_HOST) ^ bbs.AAA.com [NC] RewriteRule ^(.*)$ http://bbs.BBB.com/ $ 1 [R = 301, NC] RewriteCond% (HTTP_HOST) ^ WWW. AAA.com [NC] RewriteRule ^(.*)$ http://www.BBB.com/ $ 1 [R = 301, NC]

      • Гэвин 11 июня 2009

        Спасибо за ответ, или не делать Oh. Пожалуйста, помогите мне увидеть bbs.brandhb.com прыгать bbs.hd00.com

        • Кия 11 июня 2009

          RewriteCond% (HTTP_HOST) ^ BBS \. Brandhb \. Com [NC] RewriteRule ^(.*)$ http://bbs.hd00.com/ $ 1 [R = 301] должны быть в состоянии

  • cgeek 23 мая 2009

    Хорошая статья, спасибо за обмен

  • Винни 7 мая 2009

    Если вы хотите сделать это призыв к просвещению статические результаты о том, как писать правила? Виртуальный статического http://www.kiya.cn/ ****** фактических динамических http://www.kiya.cn/index.php ? идентификатор =******

    • Кия 8 мая 2009

      Hello. Например, так: RewriteEngine On RewriteRule ^(.+)$ index.php? Id = $ 1, но если вы хотите, чтобы ограничить содержание того, что вы сказали, как вы **** ограничить количество слов об этом: RewriteRule ^ ([0-9 ] +) $ index.php? ID = $ 1

  • Облака в 28 Апрель 2009

    Apach переписать можно переписать локального домена удаленного домена? Например я могу пойти на локальный адрес http://localhost:80/test www.baidu.com

    • Кия 28 апреля 2009

      Можно ах использования. Htaccess в письменной форме: RewriteEngine на тест RewriteRule ^ http://www.baidu.com/ вы пытаетесь увидеть не то, что вы хотите?

    • Кия 28 апреля 2009

      Приведенный выше код не судить использование доменного имени не локальный, если это так, чтобы добавить RewriteCond% (HTTP_HOST) ^ локальный [NC] Кроме того, вы можете создать тестовый каталог, создайте для передачи заголовка HTTP-302 файлов, таких как Если вы используете PHP, вы можете написать: <? PHP Header ("Место нахождения: http://www.baidu.com ");?>

      • Облака в 28 Апрель 2009

        Поблагодарил я с первой попытки.

      • Облака в 28 Апрель 2009

        Если файл JSP, то какие меры необходимо

        • Кия 28 апреля 2009

          Если это изменение. Htaccess слова и язык не относится к, если это JSP затем отправить HTTP 301 или 302 переадресацию сообщений

  • DX 11 апреля 2009

    Ну одно добавил. . . . . . . Я хотел бы оставить этот скучный сообщение не будет бранить

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

*
*
*
*
↑ Вверх