За последние 24 часа нас посетили 58737 программистов и 1816 роботов. Сейчас ищут 914 программистов ...

Вопрос по mod_rewrite

Тема в разделе "Прочие вопросы по PHP", создана пользователем Luchinsky, 27 мар 2007.

  1. Luchinsky

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

    С нами с:
    27 мар 2007
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Понимаю, что немного не по теме (это скорее к Apache, чем к PHP), но все-таки — вдруг кто подскажет?

    Хочу, чтобы у меня ссылки вида
    Код (Text):
    1. notes/name.html?hl=keywords
    конвертились в
    Код (Text):
    1. note.php?page=name&hl=keywords
    Для осуществления сего вроде бы должна подходить такая строка в .htaccess:
    Код (Text):
    1. RewriteRule ^notes/(.+)\.html\?hl=(.+)$ /note.php?page=$1&hl=$2
    Не работает. Почему — непонятно. Регэкспу проверял во многих местах, работает везде. Тут — нет. Если кто сталкивался с такой проблемой и знает пути решения, помогите, пожалуйста.
     
  2. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. RewriteEngine on
    2. RewriteRule ^notes/(.+)\.html$ note.php?page=$1&%{QUERY_STRING}
     
  3. Luchinsky

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

    С нами с:
    27 мар 2007
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Благодарю, теперь все в порядке! Хотя все равно не понимаю, почему мой вариант не работал...
     
  4. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    mod_rewrite не разбирает таким образом query string.
    вернее, там идет обработка request uri.
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Luchinsky

    для добавления передаваемых параметров надо юзать [QSA]

    ' qsappend|QSA ' (query string append)
    This flag forces the rewriting engine to append a query string part in the substitution string to the existing one instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.

    http://www.opennet.ru/docs/RUS/mod_rewrite/ - читать до просветления
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Тоже по mod_rewrite

    С помощью данного ресурса освоился с mod_rewrite
    СПАСИБО.

    только остался один вопрос.
    где-то тут говорилось что в .htaccess правила выполняются дольше чем добавленые в conf Апача
    не подскажите как именно добавить правила перезаписи в конфигурацию? конкретно внутри VirtualHost

    Заранее спасибо
     
  7. Anonymous

    Anonymous Guest

     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Олег, я все понимаю. Делал я так
    Код (Text):
    1. <VirtualHost ...>
    2. #описание хоста
    3. ...
    4. #много строк кода для mod_rewrite, которые были протестированы на работоспособность в .htaccess
    5. #первая строка это
    6. RewriteEngine On
    7. #далее 16 рабочих условий
    8. RewriteRule ЧТО КУДА
    9.  
    10. </VirtualHost>
    ни работает :roll:
    .htaccess лежит в корне сайта.
    если его там нет а его контент в virtualhost перенесен то ничего не работает