Apache RewriteRule выполняется дважды - PullRequest
0 голосов
/ 29 апреля 2020

У меня довольно простая потребность: перенаправить любой запрос в один файл.

Поэтому я положил в свой каталог apache root .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^ index.php?q=test [L,QSA]
</IfModule>

Все запросы действительно перенаправлены на индекс . php, но появляется странная вещь: PHP $ _ SERVER ['QUERY_STRING'] содержит q = test & q = test , показывающий, что перенаправление происходит дважды (и REDIRECT_URL не содержит index. php, но переданный URL, приводящий к этому, равен REQUEST_URI.

Как можно Я исправляю это, учитывая, что у меня есть только .htaccess способ настройки Apache?

Тестирование:

  • Создайте папку на вашем apache web root (например: redirect /)
  • добавить файл .htaccess, содержащий указанный выше код
  • , добавить индекс. php сброс файла $ _SERVER, чтобы увидеть результат
  • попробовать любой URL (например, : redirect / foo / bar) и вы должны увидеть дамп.

Apache версия: 2.4.33; PHP версия: 7.2.4 (& 5.6.35); WAMP (Wi-Fi n) и Red Hat (Linux).

...