Переписать для пустой строки запроса

Я создаю некоторое кэширование на одном из моих сайтов, и я не могу найти, есть ли способ добавить условие с mod_rewrite для применения, только если строка запроса в запросе пуста.

Например, мне бы хотелось знать, могу ли я иметь запрос без строки запроса, например

http://www.example.com/

загрузите страницу в

http://www.example.com/index.home.html

Но любой запрос с строкой запроса, например

http://www.example.com/?id=32

чтобы нормально загружаться и не подвергаться воздействию перезаписи.

Что мне не хватает?

Ответы

Ответ 1

Я понял это. Это похоже на трюк довольно хорошо:

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/$ /index.home.html

Конечно, если есть лучший способ, я бы хотел его услышать.

Ответ 2

Я знаю, что это довольно старые, но лучше альтернатива:

RewriteCond %{QUERY_STRING} -n
RewriteRule ^/$ /index.home.html

Ответ 3

Чтобы сопоставить с пустой QueryString, мы используем ^ $ в нашем шаблоне условий. Следующее правило перенаправляет /file.html на /file2.html, но не может перенаправить /file.html?querystring из-за условия.

RewriteEngine on

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?file.html$ /file2.html? [L,R]

Незначительный знак вопроса в конце правила важен, поскольку он отбрасывает старую строку запроса, иначе перенаправленный URL-адрес будет выглядеть как /file2.html?querystring.