Как стать автором
Обновить

Несколько сайтов на виртуальном хостинге? Без проблем!

Хостинг
Уж и не помню зачем — был как-то куплен аккаунт вирт. хостинга у РБЦ.
Пылился он без дела немногим более года и… потребовался для выкладывания одной штуковины.
Захожу я в контрол-панель и понимаю, что могу добавить домен 3-го уровня к тому домену который там уже есть, могу добавить алиас — к нему же, а вот так что б «Сайт» (новый, «самостоятельный» домен) — это фиг.
Сам не нашел — позвонил в сапорт.
Сапорт мне вежливо и доходчиво объяснил, что несколько сайтов я могу держать на своем аккаунте при помощи «мод-подчеркивание-реврите» (транскрипция авторская).

Вот, знай наших :-)
Всего голосов 23: ↑11 и ↓12 -1
Просмотры 840
Комментарии 9

URL Rewriting в ASP.NET

.NET *

Бывают случаи, когда Вам необходимо оптимизировать ссылки таким образом, чтобы они лучше индексировались поисковыми системами (в целях SEO и не только). Допустим, когда Вам надо переписать ссылки включающие в себя знаки "?", "&" и "=" в более читабельный вид.

Например Вы хотите переделать ссылку следующего вида:
www.domain.com/default.aspx?category=Title&entry=Name

В такую, более понятную:
www.domain.com/Title/Name

Есть несколько способов добиться Url Rewriting в ASP.NET.

Читать дальше...
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 21K
Комментарии 15

Практика использования mod_rewrite

Чулан
Статья предназначена тем, кто уже знаком с Apache Rewrite module и пусть не всегда, но использует его в своей нелегкой жизни. Вопрос рассматривается в контексте использования PHP как серверного скриптового языка.

Не найдя подходящей статьи на Хабре решил восполнить этот пробел и подробнее остановиться на таком замечательном инструменте, как mod_rewrite для Apache. Я не буду описывать всех премудростей построения красивых URL'иков и описывать процесс работы парсера POSIX-like регулярных выражений в Apache. В этой, я надеюсь, не последней статье по mod_rewrite я бы хотел подробнее остановиться на проблеме использования. Если в кратце — почему mod_rewrite и что он дает с небольшими примерами.

Читать дальше →
Всего голосов 25: ↑20 и ↓5 +15
Просмотры 12K
Комментарии 153

Интересная проблема в .htaccess или спецсимволы, mod_rewrite и тег C++.

Чулан
Недавно, при работе над своим проектом (сайт со статьями на тему «как сделать»), столкнулся с проблемой в работе mod_rewrite. Суть проблемы заключалась в следующем: в облаке тегов, при переходе на тег «C++» (обработанный urlencode и ставший C%2B%2B) я попадал на тег «С » (буква «С» и 2 пробела).
читаем дальше
Всего голосов 20: ↑16 и ↓4 +12
Просмотры 1.9K
Комментарии 15

Помогите разобраться с mod_rewrite

Чулан
Здравствуйте!
Прошу помощи в написании одного несложного правила перенаправления для mod_rewrite.

Требуется, чтобы для всех ссылок, запрашивающих любые элементы (графика, ситили, скрипты) действовало следующее правило перенаправления:
Если запрошен элемент, содержащий в адресе "../" допустим (../css/generic.css), перенаправить его на адрес: базовая_директория/view/[запрошенный_адрес] (css/generic.css).
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 840
Комментарии 1

Избавляемся от www в адресе сайта

Чулан
Универсальное решение проблемы постоянных редиректов на домен без www при помощи mod_rewrite. Просто и полезно. Работает на любом домене без необходимости править для каждого сайта. Ранее на хабре видел подобное, но без независимости от доменного имени.
В корень бросаем файл .htaccess со следующим содержимым:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# В переменную окружения %{ENV:PROTOCOL} помещаем протокол
RewriteRule ^(.*)$ - [E=PROTOCOL:http]
RewriteCond %{HTTPS} ^on$ [NC]
RewriteRule ^(.*)$ - [E=PROTOCOL:https]
# Если нужно убираем www
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]
</IfModule>
Всего голосов 44: ↑22 и ↓22 0
Просмотры 1.6K
Комментарии 43

Shared Hosting & mod_rewrite

Zend Framework *
Перевод
Небольшой совет для тех кто пишет приложения на Zend Framework с использованием структуры директорий рекомендуемой в мануале и, по умолчанию, в Zend_Tool и размещает их по тем или иным причинам на shared хостингах.
Читать дальше →
Всего голосов 10: ↑6 и ↓4 +2
Просмотры 1.1K
Комментарии 2

mod_rewrite: Просмотр списка правил только один раз

Разработка веб-сайтов *
С mod_rewrite есть одна проблема, об которую набиты уже наверное 15 миллионов шишек: он просматривает список правил снова и снова, пока URL удается хоть как-то изменить.

Очень часто получаеются и бесконечные циклы(например добавление расширения — оно добавляется снова и снова, если специально регэкспом не ограничить), над которыми с непривычки приходится поломать голову. Все надежды на модификатор [L] тщетны — он лишь сразу запускает следующую иттерацию обработки. Да и без бесконечного цикла лишние иттерации скорости работы не добавляют :-)

Хочу поделится достаточно простым и универсальным средством борьбы с такой особенностью, который обнаружил только-что :-)

Читать дальше →
Всего голосов 47: ↑40 и ↓7 +33
Просмотры 6.3K
Комментарии 21

mod_rewrite — просто о сложном

Чулан

Что это такое?


mod_rewrite — это модуль для веб-сервера Apache, предназначенный для преобразования URL-ов. Модуль использует в своей работе правила, которые могут быть описаны как в конфигурации сервера (httpd.conf), так и в файлах .htaccess непосредственно в файловой структуре Вашего сайта. Правила описываются в виде регулярных выражений PCRE

Hello world


Простейший пример. Допустим, Вы захотели, чтобы никто не знал, что Ваш сайт написан на PHP и решили замаскировать расширения файлов. Можно, конечно, внести соответствующую директиву в конфигурацию Apache и тогда все файлы с расширением ".msl" («My Super Language») будут обрабатываться интерпретатором PHP. Но можно поступить проще:
создаем в корне нашего сайта файл .htaccess со следующим содержимым
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.msl$ $1.php [QSA,L]


Первая директива включает механизм mod_rewrite в текущей папке и во всех ее подпапках. Вторая указывает модулю mod_rewrite, что текущая папка в файловой системе соответствует корню сайта. Третья — непосредственно правило преобразования URL.

Прочесть его можно так:
Если сразу после начала строки ("^") идет произвольное количество любых символов ( "(.*)" ), причем мы хотим запомнить, что именно это за символы, окружая их скобками, затем идет точка ("\.") (экранируем точку, потому что одиночная точка — это просто любой символ), затем символы «msl» и на этом строка заканчивается ("$"), то заменим исходный URL на следующий: возьмем первую запомненную подстроку в скобках из правила, прибавим к ней ".php", добавим все дополнительные параметры адреса, которые могли быть "[QSA]" и на этом закончим, не будем применять дальнейшие преобразования, если они есть "[L]"

Все, теперь Вы можете смело менять все ссылки, заканчивающиеся на ".php" на ".msl" и писать в своем блоге, что изобрели новый скриптовый язык. Apache, встретив ссылку на «index.msl» с помощью mod_rewrite на лету преобразует ее в «index.php» и вызовет нужный скрипт.

А что еще умеет mod_rewrite?


Читать дальше →
Всего голосов 45: ↑33 и ↓12 +21
Просмотры 38K
Комментарии 12

mod_rewrite и пользовательские переменные окружения

Чулан
Есть в сервере Apache модуль mod_env, с его помощью можно задавать пользовательские переменные окружения:

SetEnv foo bar

Мне нужно было использовать такую пользовательскую переменную окружения в директиве RewriteCond модуля mod_rewrite. Оказалось, однако, что переменные, заданные с помощью SetEnv — в mod_rewrite недоступны :(. Увы!

Что же делать? Решение очень просто. С помощью вот такого нехитрого правила можно задать переменную окружения, которой mod_rewrite сможет потом воспользоваться:

RewriteRule .* - [E=foo:bar]

Перенаправления не происходит, мы просто задаем переменную окружения foo со значением bar (A dash indicates that no substitution should be performed (the existing path is passed through untouched) — httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule).

Далее этой переменной можно воспользоваться:

RewriteCond %{ENV:foo} bar # следующее правило будет применено только если переменная foo имеет значение bar.

(обратите внимание на префикс ENV: насколько я понимаю, он обязателен для использования своих переменных окружения, тогда как стандартные, типа QUERY_STRING можно использовать и без него)

Вот и все. Надеюсь, тем, кому (как и мне) нечасто приходится настраивать апач, эта информация окажется полезной
Всего голосов 8: ↑7 и ↓1 +6
Просмотры 753
Комментарии 4

Единая точка входа в web-приложение

Разработка веб-сайтов *
Из песочницы
В современных web-приложениях принято использовать концепцию единой точки входа. Эта концепция сводится к тому, что все запросы к серверу приложения переадресовываются на один файл, который, исходя из параметров запроса, координирует дальнейшее поведение скрипта. Такой подход дает огромные преимущества, как на этапе создания, так и на этапе поддержки проекта, так как кардинально уменьшается избыточность кода, а для приложений, манипулирующих динамическим контентом, единая точка входа — это единственное правильное решение.

Читать полностью.
Всего голосов 8: ↑4 и ↓4 0
Просмотры 33K
Комментарии 20

Принцип KISS и директивы mod_rewrite

Чулан
Пребывая в перманентных нелёгких раздумьях относительно web-технологий и своей к ним причастности, решил поделиться одной простой мыслью.

Было: Принцип KISS в настоящее время используется плохо, и это — плохо!

UPD 1: Афтыр пытается изобрести велосипед, поможем ему в этом? :)
UPD 2: Автору уже не помочь… :)

Было: Такой нелепый вывод был сделал на основе анализа настроек .htaccess для нескольких ультра-популярных систем.

UPD 3: Автор приносит извинения всем почитателям таких настроек, но до сих пор ещё пытается понять «что проще», автор не отрицает, что он «ещё учится»… :)

Читать дальше →
Всего голосов 19: ↑7 и ↓12 -5
Просмотры 420
Комментарии 42

Как на самом деле работает mod_rewrite. Пособие для продолжающих

Блог компании Sprinthost
image
Эта статья выросла из идеи продвинутого обучения наших сотрудников технической поддержки работе с mod_rewrite. Практика показала, что после изучения имеющихся в большом количестве учебников на русском языке саппортам хорошо дается решение шаблонных задач, но вот самостоятельное составление правил происходит методом проб и большого количества ошибок. Проблема заключается в том, что для хорошего понимания работы mod_rewrite требуется изучение оригинальной англоязычной документации, после чего — либо дополнительные разъяснения, либо часы экспериментов с RewriteLog.

В статье изложен механизм работы mod_rewrite. Понимание принципов его работы позволяет четко осознавать действие каждой директивы и ясно представлять себе, что происходит в тот или иной момент внутри mod_rewrite при обработке директив.

Я предполагаю, что читатель уже знаком с тем, что такое mod_rewrite, и не буду описывать его основы, которые легко найти в интернете. Также нужно отметить, что в статье освещается работа mod_rewrite при использовании его директив в файле .htaccess. Отличия при работе в контексте <VirtualHost> изложены в конце статьи.

Итак, вы изучили mod_rewrite, составили несколько RewriteRule и успели столкнуться с бесконечными перенаправлениями, со случаем, когда правило почему-то не ловит ваш запрос, а также с непредсказуемой работой группы правил, когда последующее правило неожиданно изменяет запрос, кропотливо подготовленный правилами предыдущими.

Почему так происходит?
Читать дальше →
Всего голосов 208: ↑203 и ↓5 +198
Просмотры 271K
Комментарии 25

Попытка номер раз создать почти идеальный htaccess

Разработка веб-сайтов *
Tutorial
    - Google выше ранжирует сайты, которые загружаются быстрее.
    - Если на eBay или Amazone увеличить время загрузки страниц на 9% они теряют 1% прибыли.
    - Сделать свой сайт быстрее, чтобы сэкономить на клиентском трафике и на числе обращений к серверу.


.htaccess — наш герой


Профессионалы знают, что такое htaccess.
Тем кто собираются уйти с народ.ру на php-хостинг только предстоит узнать, что это такое.
Те кто только что установил свои первые jooml'у или wordpress срочно должны узнать о нашем герое — htaccess

Зачем нам .htaccess ?


Представьте, что вы купили себе хостинг и кажется, почти обрели счастье. Но однажды (а может быть дважды, а может и трижды) ваш сайт перестает отвечать на запросы. Начинает медленно грузиться и вообще вести себя странно. А виртуальный хостинг это такая хитрая штука, что помимо вашего сайта на этом сервере находится ещё два десятка других сайтов. Все они разные по мощности, организованности и трафику. И когда ваш сосед по случайности, а может и умыслу запускает на своем хостинге сложные или избыточные в алгоритмах скрипты, это отзывается и на вас.

Или другой пример. Скажем ваш ресурс начинает набирать популярность, но переезжать на выделенный сервер ещё рано, а мощностей VPS уже не хватает. Вас очень может выручить htaccess.

А ещё htaccess может решить некоторые вопросы с безопасностью вашего сайта.

А ещё…

Полезные советы по htaccess с разжевыванием для новичков
Всего голосов 85: ↑70 и ↓15 +55
Просмотры 239K
Комментарии 77

Двуликий REQUEST_URI или в поисках корректного HTTP/1.1 сервера

Разработка веб-сайтов *PHP *
Вы знаете, чем отличается %{REQUEST_URI} в Apache mod_rewrite от $_SERVER["REQUEST_URI"] в PHP?

Сможете в .htaccess на уровне Apache сделать корректную переадресацию 301 с домена с префиксом www или на него?

Для последнего вопроса я и сейчас не смогу предложить решение. Причина в протоколе HTTP/1.1, который пришлось изучить подробнее, когда «изобретал велосипед» (создавал ядро для сайта).

Всё дело в HTTP-заголовке запроса «Host:». При определённых условиях там может быть всё, что угодно, причём сервер должен полностью это проигнорировать согласно HTTP/1.1. Большинство же разработчиков используют значение этого поля, например, для SEO-оптимизаций. Забегая вперёд, скажу, что дополнительный прокси (например, nginx) позволит решить эту проблему.

Для иллюстрации некорректного поведения серверов решил перебрать сайты компаний Хабра. Для дюжины сайтов сделал это вручную, а потом обнаружил, что некоторые сайты на ошибочные запросы отвечают «правильно». После этого была написана небольшая утилита для тестирования, что позволило увеличить количество тестовых шаблонов и проверяемых сайтов.

Что же скрывает REQUEST_URI в HTTP/1.1?

Узнать подробности
Всего голосов 48: ↑43 и ↓5 +38
Просмотры 59K
Комментарии 27

Как заставить Apache работать или как я реализую создание миниатюр изображений в своих проектах

Apache *
Из песочницы
Здравствуйте, хабровчане.

Занимаясь созданием различных интернет-проектов уже порядочное время, часто был просто возмущён одним фактом — не все элементы системы несут на себе равную нагрузку. Я всегда придерживался мнения, что каждый элемент системы, будь то интерпретатор того или иного языка для сайта, или база данных, или даже сам HTTP сервер, должен брать на себя максимально возможную нагрузку, дабы облегчить участь остальных элементов системы. Да и сами приложения для своих проектов всегда старался максимально разгрузить.

Сейчас же мне хотелось бы поделиться своим опытом в том, как «озадачить» Apache при создании миниатюр изображений (Thumbnails).
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 8.4K
Комментарии 19

Не поставил favicon на сайте — получи двойной трафик от Chrome

Разработка веб-сайтов *PHP *Google Chrome
Из песочницы
Впервые за пять лет разработки интернет-сайтов я столкнулся с весьма неожиданной проблемой, стоившей мне многих часов поиска, нервов и волос на голове. Внезапно я обнаружил, что на новом сайте, который у меня сейчас в разработке на локалхосте, дублируются INSERT запросы к БД. Отправляю один комментарий через форму, а в базу вставляются два. Если вы не знаете, как связана эта проблема с Chrome, favicon.ico и ModRewrite, то добро пожаловать под кат.
Читать дальше →
Всего голосов 91: ↑32 и ↓59 -27
Просмотры 17K
Комментарии 60