- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Прогнал эти правила на тестовом серве. Первое, как и ожидалось, не работает вообще. Второе работает правильно. Третье выполняет лишнюю операцию, но сгодится на случай прямого обращения к index.php.
Кстати, процитированный занудой пример из дока полностью нерабочий. Оставляю ему право самому отправить это наблюдение автору. :D
[off]
Lupus, для начала приведенный док не "волонтерский", а создателя mod_rewrite =)
Как и в нем, в других уважаемых источниках прямой слэш не экранируется.
При указании RewriteRule "Substitution" может иметь ведущий слэш, если указывается абсолютный путь к файлу (от DocumentRoot), а не относительно RewriteBase.
Ostmaster, "второй слеш апач отфильтрует на входе" - Apache 1.3.37 не отфильтровал, 2.2.4 - отфильтровал (на localhost).
Каюсь, приведенный мной пример был написан для использования в httpd.conf, а не в .htaccess. На этапе обработки правил из httpd.conf url содержит ведущие слэши, а на этапе обработки правил из .htaccess в url ведущих слэшей уже нет. Тем не менее, он абсолютно корректный (как ни удивительно =))
[\off]
Я ничего не утверждала однозначно - читайте внимательно.
Я попыталась помочь, ответив на вопрос, который "подвис" (и насколько я понимаю он и сейчас без ответа), предупредив, что я не специалист в этих вопросах.
Почему бы Вам не направить свою энергию на решение конкретной проблемы, коль Вы так владеете темой?
А :D?
Тестирование мобильных приложений и сайтов (/ru/forum/1032925) https://www.facebook.com/ostmaster (https://www.facebook.com/ostmaster)
NA Кролик-Зануда, поскольку вы решили порассуждать "академически", попробую ответить в вашем тоне. ;)
Как и в нем, в других уважаемых источниках прямой слэш не экранируется.
Прямой слеш не относится с спецсимволам регулярных выражений, если не является ограничителем. Разумеется, его можно не экранировать в данном случае. Однако, по нескольким причинам, это лучше бы делать. Если вам угодно развести длинный оффтоп, на тему "почему именно", давайте в другом месте.
При указании RewriteRule "Substitution" может иметь ведущий слэш, если указывается абсолютный путь к файлу (от DocumentRoot), а не относительно RewriteBase.
Более того, в контексте server config путь от DocumentRoot обязателен. Еще добавлю, что при его наличии, обходится подстановка RewriteBase в контексте per-dir.
Каюсь, приведенный мной пример был написан для использования в httpd.conf, а не в .htaccess.
Хм. Оказывается для этих двух контекстов разные RewriteRule? И примеры в доках могут быть написаны специально для одного из них? ;)
На этапе обработки правил из httpd.conf url содержит ведущие слэши, а на этапе обработки правил из .htaccess в url ведущих слэшей уже нет.
Какое это имеет значение? Если заглянете в код, то увидите любопытный комментарий на эту тему:
hostname and compare/substitute only the stuff after it.
Повторяю: приведенный вами пример полностью нерабочий, ни в per-dir ни в server-config контекстах (как ни удивительно ;)). И если вы намерены продолжать спор о его "абсолютной корректности", потрудитесь сперва его протестировать.
[off]
Повторяю: приведенный вами пример полностью нерабочий, ни в per-dir ни в server-config контекстах (как ни удивительно ). И если вы намерены продолжать спор о его "абсолютной корректности", потрудитесь сперва его протестировать.
Протестировал (Apache 2.2.4) =) Полностью рабочий.
Хм. Оказывается для этих двух контекстов разные RewriteRule? И примеры в доках могут быть написаны специально для одного из них? ;)
Почти так. Уточняю: на этапе обработке правил, указанных для сервера (на уровне #'Main' server configuration# или внутри <VirtualHost>..</VirtualHost>, а не <Directory>..</Directory>) ведущие слэши присутствуют в обрабатываемом url.
Мануал - вещь хорошая, не стоит его недооценивать и переоценивать свои знания ;)
[/off]
Протестировал (Apache 2.2.4)
На 2-м не проверял. Ограничился тем, из документации к которому пример взят.
И, кстати, проблемы которого здесь обсуждаются.
Уточняю: на этапе обработке правил, указанных для сервера (на уровне #'Main' server configuration# или внутри <VirtualHost>..</VirtualHost>, а не <Directory>..</Directory>) ведущие слэши присутствуют в обрабатываемом url.
Это интересно, конечно, но тогда вам придется отказаться от VirtualHost и использовать демократическое правило "каждому сайту по отдельному апачу" потому, что для витруальных хостов эти правила никак не действуют. Рассказать, почему или сами догадаетесь? ;)
Мануал - вещь хорошая, не стоит его недооценивать и переоценивать свои знания
Если у меня возникают сомнения в мануале, я предпочитаю читать исходники. И вам советую. ;)
Это интересно, конечно, но тогда вам придется отказаться от VirtualHost и использовать демократическое правило "каждому сайту по отдельному апачу" потому, что для витруальных хостов эти правила никак не действуют. Рассказать, почему или сами догадаетесь? ;)
Расскажите, пожалуйста!
Проверил на 1.3.12 - работает
Если у меня возникают сомнения в мануале, я предпочитаю читать исходники. И вам советую. ;)
Как это забавно, однако =) mod_rewrite написали в 1997 году. Мануал по нему, написанный автором mod'а, висит на официальном сервере Apache уж почти лет 10. Этот мануал почти дословно (и примеры тоже) перекачевал в мануал по версии 2. Либо за все это время ни один разработчик/пользователь Apache не углядел ошибок в нем, либо все это знают, но не торопятся исправлять. Либо... ;)
Проверил на 1.3.12 - работает
В main server configuration? Это единственный контекст, в котором регэксп ^/$ срабатывает.
Как это забавно, однако =) mod_rewrite написали в 1997 году. Мануал по нему, написанный автором mod'а, висит на официальном сервере Apache уж почти лет 10. Этот мануал почти дословно (и примеры тоже) перекачевал в мануал по версии 2. Либо за все это время ни один разработчик/пользователь Apache не углядел ошибок в нем, либо все это знают, но не торопятся исправлять. Либо...
Аппеляция к авторитетам, как аргумент в споре. Знакомо. :D
Это не ошибка, строго говоря. Это исключительно теоретический пример, который в нормальном, рабочем сервере использовать никто не будет. И, между прочим, не имеющий никакого отношения к обсуждаемой конфигурации. Ни в виртуалхосте, ни в .htaccess, это правило не работает и работать не может.
Упс. Признаю свою ошибку. Если мы выносим обработку за контекст директории, функция замены пути будет обойдена. Следовательно, это правило в таком случае работает. Ну что-ж. Главное не избегать ошибок, а признавать их. :)
Тем не менее, к обсуждаемой конфигурации этот пример не относится никак и спор, возникший после вашего неоправданного упрека ostmaster, носит исключительно теоретический характер.
ЗЫ. А исходники рулят. В них все куда однозначнее, чем в доках. :)
А там, похоже, с errorpage наворочено.
А с виду не заметно