За последние 24 часа нас посетили 62922 программиста и 1743 робота. Сейчас ищут 913 программистов ...

Баг с символом в php 7 или в Apache 2.4 или.....

Тема в разделе "Прочие вопросы по PHP", создана пользователем vayas, 9 июн 2016.

  1. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    @denis01 версия apache 2.4, на счёт правила, твоя версия работает.
    PHP:
    1. RewriteRule . index.php
    А вот с таким уже есть проблемы именно с буквой "Х":
    PHP:
    1. RewriteRule ^(.*)$ index.php
    @Ganzal Спасибо за наводку, не знал про отладку рерайтеров, почитаю про них.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Там у одинокой точки вроде какое-то специальное назначение. Типа .* это регулярное выражение, но просто . это не "любой символ" в регулярном выражении, а байпас исходного урла.
     
    denis01 нравится это.
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    где бы это в документации отыскать
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Не проснулся еще. Это про "-" (дэш) в замене. В патерне всегда регулярка.
     
    denis01 нравится это.
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    да, вот это видно в документации, что там регулярное выражение, но почему точка не один любой символ, вот это интересно
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Да ок всё, точка должна быть одним любым символом. В патерне всегда перловская регулярка.
     
    denis01 нравится это.
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    вот с одним символом всё понятно, хотим больше, то делаем .+ этот момент не понятен, почему точка срабатывает на любое кол-во символов
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    А, я тебя понял. У тебя регулярка не ^.$ а значит достаточно чтоб в урле был минимум один любой символ. А он там всегда есть - лидирующий слэш. Для любой другой длины урла точка тоже будет срабатывать. Так сделано для снижения расходов на механизм регулярных выражений. Поэтому постоянно и рекомендуют если у тебя разбором урла занимается пхп-роутер то рерайт делать не ^(.*)$ index.php а . index.php. Вся соль одинокой точки в том чтоб быстро совпасть с любым адресом. Это даже не регулярка короче.
     
    vayas и denis01 нравится это.
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    всё теперь дошло, спасибо, немного тормозил, так как и вправду всегда почти ^ и $ используется, чтобы не дать пройти лишним данным, вот тут и запутался. Ошибся и думал о другом.