Назад | Перейти на главную страницу

Строка запроса после .html в htaccess не работает. Почему?

Мой сайт написан на PHP. Я изменил его URL-адреса с php на html и преобразовал его в .htaccess файл.

Я помещаю виджет jquery ui автозаполнения на страницу своего сайта, и его вызов удаленного файла для получения предлагаемых элементов не работает. Поскольку удаленный URL-адрес изменен на

search.html?term=spr

Я поместил эту строку в файл htaccess, но она не совпадает, потому что она ничего не учитывает после \.html.

RewriteRule ^search\.html?term=([^-]+)$ search.php?term=$1 [L,NC,NS]

Я тоже пробовал

RewriteRule ^search\.html\?term=([^-]+)$ search.php?term=$1 [L,NC,NS]

но оба не работают.

Ты поможешь мне?
Спасибо.

Вам нужно указать Apache, чтобы он добавил строку запроса (QSA = Qуери sтрогать аppend)

 RewriteRule ^search\.html$ search.php [L,NC,NS,QSA]

^search\.html$ регулярное выражение, соответствующее литералу search.html. ^ совпадения с самого начала, $ матчи до конца и \. соответствует буквальной точке вместо любого символа (особое значение точки в регулярных выражениях)

Это правило ...

  • Соответствует запросу на search.html (RewriteRule ^search\.html$)
  • и переписывает его на search.php,
  • после этого правила не обрабатываются ([L]),
  • совпадение без учета регистра (например, Search.HTML тоже бы переписали) ([NC])
  • не будет использоваться для подзапросов ([NS])
  • и, наконец, добавит исходную строку запроса после search.php ([QSA])

Для обзора флагов: