За последние 24 часа нас посетил 18101 программист и 1622 робота. Сейчас ищут 1259 программистов ...

Точки в GET. Не для слабонервных!

Тема в разделе "Регулярные выражения", создана пользователем rubodon, 8 ноя 2012.

  1. rubodon

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

    С нами с:
    2 сен 2011
    Сообщения:
    7
    Симпатии:
    0
    Здравствуйте уважаемые форумчане.
    Есть файл index.php
    В нем всего одна строчка
    Код (Text):
    1. <?php echo $_GET['a']; ?>
    Еще есть файл .htaccess в котором написано
    Код (Text):
    1. RewriteEngine on
    2. RewriteRule ^([a-z]+)$ ?a=$1
    Уважаемые знатоки! Внимание, вопрос!
    Почему, когда я ввожу в адресную строку /?a=abc. index.php выводит abc. Однако, если я ввожу /abc., то index.php выводит просто abc (без точки)?
    Подскажите, пожалуйста, почему это происходит и как сделать так, чтобы возвращалась 404 ошибка, если в конце url стоят точки? Ведь RewriteRule, в моем случае, не должен пропускать точки!
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    забавно
     
  3. rubodon

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

    С нами с:
    2 сен 2011
    Сообщения:
    7
    Симпатии:
    0
    Если это сарказм, то прошу Вас, скажите, что я делаю не так?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну похоже что в первом случае когда точка проходит, то не используется RewriteRule.

    И похоже, если вы урлы задаёте так /?a=abc. то у вас вобще ни в каком случае не используется правило. =)

    а если так /lalala.pupupu
     
  5. rubodon

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

    С нами с:
    2 сен 2011
    Сообщения:
    7
    Симпатии:
    0
    В этом случае возвращает 404. Но почему в случае /lalalapupupu. не возвращает?
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не знаю. =(

    показывайте весь .htaccess
     
  7. rubodon

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

    С нами с:
    2 сен 2011
    Сообщения:
    7
    Симпатии:
    0
    Это и есть весь .htaccess

    Кстати, если ввести в конце url любой символ кроме точки, например /abc-, то вернется 404 ошибка.
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мистика
     
  9. rubodon

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

    С нами с:
    2 сен 2011
    Сообщения:
    7
    Симпатии:
    0
    Извините, не могу понять, вы подшучиваете или на самом деле не знаете почему так происходит?
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не знаю. регулярка говорит возьми символы с a по z подряд один или больше одного с самого начала до самого конца строки. если бы не было знака доллара на конце, то всё было бы понятно.
     
  11. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.118
    Симпатии:
    1.245
    Адрес:
    там-сям
    данная регулярка вообще-то не должна пропускать имя "abc." (поверь или проверь)
    видимо сам Apache транслирует имена с точкой, даже с любым количеством точек, на конце как имена без точки на конце (поверь или проверь) создай на сайте текстовый файл с именем, скажем, "xxx" и попробуй набрать в URL "xxx...".

    )))
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я ж грю мистика
     
  13. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.118
    Симпатии:
    1.245
    Адрес:
    там-сям
    скорее фича