mod_rewrite отправляет несколько запросов обратно на сервер Lucee - PullRequest
0 голосов
/ 17 ноября 2018

У меня, похоже, проблема в том, что mod_rewrite отправляет несколько запросов обратно на мой сервер Lucee.Иногда 2 запроса, иногда 4 запроса.У меня есть специальная прикладная среда в Lucee для обработки и управления всеми запросами.Требуется, чтобы запрос был переписан и передан обратно Lucee как «/» (root) с параметром запроса, установленным для запрашиваемого пользователем URI.Кажется, что вся перезапись работает должным образом, но более одного запроса запускается внутренним сервером.Ниже приведена моя настройка правила перезаписи:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ "/" [E=vPath:$1,PT,NE,NS,L]

<If "-T reqenv('vPath')">
    RequestHeader add "vPath" "%{vPath}e"
</If>

RewriteRule просто захватывает URI и устанавливает переменную среды «vPath», а затем перезаписывает URI в «/» с параметрами:

PT (pass through to next handler)
NE (no URI escaping of output)
NS (not for internal sub-requests)
L (last rule)

Кажется, все это работает так, как нужно, однако в ходе тестирования я убедился, что запрос, попавший в код Lucee, фактически вызывается несколько раз.Если я включу RewriteEngine off, то только один запрос будет отправлен на сервер.Включите RewriteEngine on и снова отправьте несколько запросов (от 2 до 6).

Также обратите внимание, что не имеет значения, использую ли я "P" (принудительный прокси) или "PT" (проход)до следующего обработчика), я получаю те же результаты нескольких запросов.

Любая помощь будет принята с благодарностью.Я отчасти NUBE для mod_rewrite.

Система:

OS: Linux 4.18.0-11-generic
Java: 1.8.0_181
Lucee: 5.2.9.31
Apache Tomcat: 8.5.33

1 Ответ

0 голосов
/ 20 ноября 2018

Алекс был прав, указав мне на использование ведения журнала для mod_rewrite.[спасибо Совету Алексу, спасибо!]

Обратите внимание, что для mod_rewrite v2.4 и выше вы просто используете

LogLevel alert rewrite:trace6

И это обновит файл журнала в

/var/log/apache2/error.log

Моя проблема заключалась в том, что я не учитывал другие запросы к файлам, которые на самом деле не существуют, которые также перенаправлялись в корневой веб-каталог, например

/favicon.ico

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

...