IT-Expert
  IT-Expert / Веблог / Ключевые слова / mod_rewrite
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 
      Лента подкастов IT-Expert IT-Expert audiopodcasts
      входит в:
      Web Development

      mod_rewrite

      Использование mod_rewrite для временного сообщения об обслуживании сервера

      12:22, 17 октября 2006 ( )

      Заметка из серии mod_rewrite tips.

      Вот, оригинальный подход к проведению временных работ над веб-сервером, посылая его в режим посылания пользователей.

      Бывает, заменяем, апргрейдим и вообще производим различные работы на веб-сервере, которые могу т испугать случайно зашедшего в этот самый интимный момент пользователя. В таких случаях рекомендуется вывешивать успокоительное сообщение наподобие "Не переживай друг, сервер всего лишь в режиме maintenance". 

      Сделать это можно элегантно, при наличии mod_rewrite добавляем такие строки в наш .htaccess:

      RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
      RewriteCond %{SCRIPT_FILENAME} !maintenance.html
      RewriteRule ^.*$ /maintenance.html [L]

      Таким образом, при создании в корне сайта файла maintenance.html пользователю будет отображен контент этой страницы, да и все запросы будут отправлены на эту страницу.

      По окончании работ просто удаляем, или же переименовываем страницу maintenance.html, тем самым возобновляя нормальную работу сайта. 

       

      Типичный .htaccess для моих сайтов

      12:13, 28 апреля 2005 ( )

      # Подключение Parser-а для всех .html-страниц
      AddHandler parsed-html html
      Action parsed-html /cgi-bin/parser3.cgi

      RewriteEngine on

      ## Русская версия
      RewriteCond %{REQUEST_URI} ^/eng/
      RewriteRule ^eng/(.*) $1&lang=eng [PT]


      ## Английская версия
      RewriteCond %{REQUEST_URI} ^/ukr/
      RewriteRule ^ukr/(.*) $1&lang=ukr [PT]

      ## обрезка html
      #RewriteCond %{REQUEST_URI} \.html
      #RewriteRule (.*)/(.*)\.html(.*) /$1$3&method=$2 [PT]

      RewriteCond %{REQUEST_URI} \.html
      RewriteCond %{REQUEST_URI} !^/nbs
      RewriteCond %{REQUEST_URI} !^/jscript
      RewriteCond %{REQUEST_URI} /admin/
      RewriteRule (.*)/(.*)\.html(.*) /$1$3&method=$2 [PT]


      RewriteCond %{REQUEST_URI} ^/admin/
      RewriteCond %{REQUEST_URI} !/jscript
      RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|jpeg|png|css|js|cgi)$ [NC]
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^admin/(.*) adm.html?uri=/$1 [QSA,L]


      RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|jpeg|png|css|js|cgi)$ [NC]
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f

      RewriteRule ^(.*)$ index.html?uri=/$1 [QSA,L]

      DirectoryIndex index.html

      <files "adm.html">
       AuthType Basic
       AuthName "Alex Admin"
       AuthUserFile "/home/kyivpatr/.htpasswds/passwd"
       require valid-user
      </files>

       

      Два домена на одном сайте.

      09:27, 20 апреля 2005 ( )
      Источник: http://www.parser.ru/forum/?id=39589

      У меня такая проблема:
      Имеется домен с хостингом www.name.ru и домен без хостинга www.name2.net.ru. Требуется сделать так, чтобы при запросе www.name2.net.ru открывался физически www.name.ru/domain/, при наборе www.name2.net.ru/news/ — www.name.ru/domain/news/. Причем в строке браузера отображалось попрежнему www.name2.net.ru/news/.
      C помощью DNS прописал, что при наборе name2 открывается name. Но получить то, что требуется не могу. Пробовал решить ситуацию с помощью rewrite, но не помогло (смотрел примеры на egoroff.spb.ru).

      Если это возможно, то как будет вести себя Парсер (ведь получается, что корневой каталог не "/" a "/domain/")?

      Знаю, что сообщение немного не в тему, но единственным оправданием будет то, что сайт name2 работает на Парсере. :-)

      Ответ от PAF:

      давайте два правила перепишем в одно, что-то вроде:
      #нужный host
      RewriteCond %{HTTP_HOST} name2
      #его ещё не загнули
      RewriteCond %{REQUEST_URI} !^/domain/
      #загибаем
      RewriteRule (.*) /domain/$1 [L,QSA]
       

      Что использовалось при разработке сайта

      14:39, 24 марта 2005 ( )

      При разработке сайта использовались такие инструменты:

      • Для кодирования классов:
        Far Manager с плагином colorer "4ever" и схемой подсветки синтаксиса Parser3
      • Для создания макета сайта:
        Photoshop CS. Для порезки макета ImageReady CS
      • для работы с XSL и верстки шаблонов XSeleretor 2.5
        Почему он удобен для меня?
        Потому что есть: подсветка синтаксиса, autocomplete, XSL дебаггер, удобный навигатор по шаблонам. А это, как правило, все что нужно для полноценной работы с XSL.
      • Для тестирования сайта:
        IE 6, FireFox 1.0, Opera
      • CVS и TortoiseCVS в качестве клиента для поддержания дерева исходников проекта.
      • Для редактированя CSS:
        TopStyle 3.11
      • Для работы с MySQL:
        MySQLFront 2.5 (разработка которого, к сожалению прекратилась).
      • Веб-сервер Apache в сборке Denver (+BaseParserModule) и mod_rewrite для красивых ЧПУ(человекопонятныхурл).
      • Google API в разделе "Эксперименты"
       

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

      15:10, 21 марта 2005 ( )

      Kavredo из форума www.parser.ru:

      /news/12.html --> /news.html?id=12
      RewriteRule ^news/([0-9]+)\.html$ news.html?id=$1 [QSA]
      /news/12/ --> /news.html?id=12
      RewriteRule ^news/([0-9]+)/$ news.html?id=$1 [QSA]
      Домашнее задание
      (чтобы хоть как-то компенсировать вред моего прямоответа):

      Теория
      1. Что делает флаг QSA?
      2. Всегда ли нужно прописывать RewriteBase?

      Практика
      1. Сравните мои варианты и ваши. Проанализируйте их, используя документацию по mod_rewrite.
      2. Подумайте, как обработать отсутствие закрывающего слеша в последнем варианте и привести к виду со слешом.
      3. Приведите /news/category_name/31122005.html к /news.html?cat=category_name&y=2005&m=12&d=31. Где category_name может принимать значения длиной не более 7 символов, включая цифры и латиницу разных регистров. Причем, первый символ в названии категории - буква.

      P. S. Имхо, лучше использовать конкретное имя параметра GET, вместо nameless. Удобочитаемость кода возрастает, так как уже частично будет понятно, что за информация придет - id в моем случае.

       
      © Максим Прокопов 2005-2016 О сервере