Как добавить строку запроса, такую ​​​​как флаг QSA для mod_rewrite, при использовании mod_lua в Apache?

Я хочу написать скрипт, который переписывает URL-адрес в mod_lua, то есть я хочу унаследовать строку запроса, например флаг QSA для mod_rewrite.

Конфиг mod_rewrite:

RewruteCond ^/foobar/([0-9A-Za-z]+)/(.+)$
RewriteRule ^.*$ /foobar/$2?_ID_=$1 [QSA,L]

Я пытаюсь кодировать в mod_lua, как показано ниже, но это не работает. Пожалуйста, скажите мне, что не так? И сможет ли он быть более простым кодом?

Конфиг mod_lua:

LoadModule lua_module modules/mod_lua.so
LuaHookTranslateName /usr/local/httpd/conf/extra/lua/router.lua app_routing

Маршрутизация /usr/local/httpd/conf/extra/lua/router.lua:

require "apache2"
function app_routing(r)
  local matches = r:regex(r.uri, [[^/foobar/([0-9A-Za-z]+)/(.+)$]])
  if matches then
    r.uri  = "/foobar/" .. matches[2]
    if r.args then
        r.args = r.args .. "&_ID_=" .. matches[1]
    else
        r.args = "?_ID_=" .. matches[1]
    end
  end
end

person Community    schedule 14.07.2015    source источник


Ответы (1)


Несколько вещей, прежде чем мы действительно сможем заняться решением проблемы:

  • r.args никогда не должен начинаться с "?", вопросительный знак отсутствует в строке запроса, это разделитель, который используется для обозначения начала строки запроса, поэтому на самом деле он не является частью самой строки.
  • Вы должны включить отладку как для mod_lua, так и для вашего скрипта. Попробуйте добавить «LogLevel lua:debug» в свою конфигурацию и проверьте журнал ошибок на наличие отладочной информации. Кроме того, добавьте отладку в свой скрипт с помощью r:info(logmessage_here), которая выдаст ваши собственные отладочные сообщения в журнал ошибок.

Как только это будет сделано, у нас будет журнал ошибок, который стоит проверить на наличие подсказок.

person Daniel Gruno    schedule 14.07.2015
comment
Спасибо за ответ. Я постараюсь сделать 2 вещи, которые вам посоветовали. - person ; 15.07.2015