Тестовый шаблон в RewriteCond фактически пытается сопоставить ввод, начинающийся с литерал строка /%{HTTP_HOST}/
. Значение переменной %{HTTP_HOST}
не раскрывается так, как вы ожидали, поэтому условие всегда будет истинным (сам шаблон никогда не будет совпадать). Вам нужно будет изменить RewriteCond, и есть несколько разных подходов.
Если это единственный перезаписываемый текст, который вы выполняете, вы можете просто проверить, сделали ли вы это еще:
RewriteCond %{ENV:REDIRECT_STATUS} =""
Или, если ресурс не существует до тех пор, пока вы его не перепишите, вы можете проверить это вместо этого:
RewriteCond %{REQUEST_FILENAME} !-f
Наконец, вы можете имитировать ваше исходное состояние, используя обратные ссылки в тестовом шаблоне вместе с символом-разделителем, который не будет отображаться в вашем URL:
RewriteCond /%{HTTP_HOST}/#%{REQUEST_URI} !^([^#]+)#\1
Обратите внимание, что это не гарантирует, что вы сделали перенаправление, но только гарантирует, что в URI запроса будет имя хоста в качестве первого сегмента пути. Тем не менее, как правило, это достаточно хорошо.