Apache: как LogFormat оригинальная строка запроса, прежде чем переписать - PullRequest
0 голосов
/ 21 мая 2019

У меня есть mod_rewrite и работает нормально, поэтому /screens/myScreen/myAction?id=123 переписывается как (примерно) /actions/screen.php?scr=myScreen&cmd=myAction&id=123

Я пытаюсь настроить журналы apache, чтобы они включали только то, что мне действительно нужно, в удобном для анализа формате. Я хотел бы записать исходный путь URL (/screen / myScreen / myAction) и исходную строку запроса (id = 123).

Я пробовал варианты, найденные в документах :

% U отлично работает и лог /screens/myScreen/myAction

Но % q вместо регистрации ?id=123, как я и ожидал, ведет запись ?scr=myScreen&cmd=myAction&id=123 (строка запроса после переписывается вместо первоначальной).

Самым близким, что я нашел, было % r , но оно включает метод, протокол и все вместе, как GET /screens/myScreen/myAction?id=123 HTTP/1.1

Есть ли способ получить только оригинал id=123?

В случае, если это имеет значение, я использую это правило перезаписи:

RewriteRule  ^screens/([a-zA-Z0-9_]+)/([a-zA-Z]+)$ /fx/actions/screen.php?_scr=$1&_cmd=$2 [QSA,L]

.

1 Ответ

0 голосов
/ 28 июня 2019

Я боролся с этим сегодня и думаю, что нашел это.

Из документов

Модификаторы "<" и ">" могут использоваться для запросов, которые были внутренне перенаправлены, чтобы выбрать, следует ли обращаться к исходному или окончательному (соответственно) запросу.

Ответ: %<q

Тестирование различных опций:

COLUMN 1                                  COLUMN 2                COLUMN 3                               COLUMN 4                                  COLUMN 5          COLUMN 6          COLUMN 7
%r: [GET /nothing.php?key=val HTTP/1.1]   %U: [/nothing.php]      %{REDIRECT_QUERY_STRING}e: [key=val]   %{REQUEST_URI}e: [/nothing.php?key=val]   %q: [?code=404]   %>q: [?code=404]   %<q: [?key=val]
%r: [GET / HTTP/1.1]                      %U: [/index.html]       %{REDIRECT_QUERY_STRING}e: [-]         %{REQUEST_URI}e: [-]                      %q: []            %>q: []            %<q: []
%r: [GET /common/.css HTTP/1.1]           %U: [/common/.css]      %{REDIRECT_QUERY_STRING}e: [-]         %{REQUEST_URI}e: [-]                      %q: []            %>q: []            %<q: []
%r: [GET /custom/.css HTTP/1.1]           %U: [/custom/.css]      %{REDIRECT_QUERY_STRING}e: [-]         %{REQUEST_URI}e: [-]                      %q: []            %>q: []            %<q: []
%r: [GET /background.jpg HTTP/1.1]        %U: [/background.jpg]   %{REDIRECT_QUERY_STRING}e: [-]         %{REQUEST_URI}e: [/background.jpg]        %q: [?code=404]   %>q: [?code=404]   %<q: []
%r: [GET /favicon.ico HTTP/1.1]           %U: [/favicon.ico]      %{REDIRECT_QUERY_STRING}e: [-]         %{REQUEST_URI}e: [-]                      %q: []            %>q: []            %<q: []
  • Столбцы 1, 2 и 5, с которыми вы уже знакомы.
  • Столбец 3 был бы великолепен как отдельный столбец, но не мог бы доходить до %U без ?. Можно было бы жестко закодировать, но тогда для запросов без запроса вы бы увидели /file.ext?-, что ужасно.
  • Столбец 4 отлично подходит для запросов, имеющих параметры запроса, но полностью завершается неудачей, если их нет.
  • Столбец 6, кажется, соответствует столбцу 5.
  • Колонка 7 на деньгах.

Следовательно, %U%<q, или, в моем случае, %{Host}i%U%<q, потому что я хочу увидеть, какое доменное имя использовалось, поскольку у меня есть несколько указателей на один и тот же сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...