Страница 1 из 1

Изменение запроса в зависимости от условий

СообщениеДобавлено: Ср май 20, 2020 6:26 pm
tonchikp
Подскажите пожалуйста, как мне сделать такое?

  1. Есть запрос
    /директория/файл?строка

    надо превратить в
    /директория/файл.php?строка

    (то есть добавить к нему .php)
  2. А если файла не существует то превратить его в
    /директория/файл.html?строка

    (то есть заменить .php на .html)

СообщениеДобавлено: Ср май 20, 2020 6:35 pm
Emilien
Код: выделить все
RewriteCond %{DOCUMENT_ROOT}/$0.php -f
RewriteRule ^folder/.+ $0.php [L]

RewriteCond %{DOCUMENT_ROOT}/$0.html -f
RewriteRule ^folder/.+ $0.html [L]

СообщениеДобавлено: Ср май 20, 2020 8:05 pm
tonchikp
Спасибо за ответ! Попробую

1. А если "директории" может и не быть в запросе? Можно убрать "folder"?
2. в $0 подставляется полный запрос, а не получится так "/директория/файл?запрос.php" вместо "/директория/файл.php?запрос"?

СообщениеДобавлено: Ср май 20, 2020 8:21 pm
Emilien
1. "folder/" можно убрать. RewriteRule ^.+ $0.php [L]
2. На вход RewriteRule попадает только путь к файлу, а GET параметры следует искать в переменной %{QUERY_STRING}.
как работает mod_rewrite

СообщениеДобавлено: Ср май 20, 2020 8:28 pm
tonchikp
Отлично! Спасибо!

Добавлено:
Ещё раз огромное спасибо! Вы мне очень-очень помогли вдвойне! И решением, которое одновременно и простое, и короткое, и действует! :) А также статья по вашей ссылке, на которую я почему-то не натыкался раньше!