0

mod_lua に URL を書き換えるスクリプトを書きたい、つまり mod_rewrite の QSA フラグのようなクエリ文字列を継承したい。

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
4

1 に答える 1

0

問題の解決を実際に検討する前に、いくつかのことを確認してください。

  • r.args は決して "?" で始まらないでください。疑問符はクエリ文字列に存在しません。これは、クエリ文字列の開始位置を示すために使用される区切り文字であるため、実際には文字列自体の一部ではありません。
  • mod_lua とスクリプトの両方のデバッグを有効にする必要があります。「LogLevel lua:debug」を構成に追加してみて、デバッグ出力のエラー ログを確認してください。また、r:info(logmessage_here) を使用してスクリプトにデバッグを追加します。これにより、エラー ログに独自のデバッグ メッセージが出力されます。

これが完了すると、ヒントを確認する価値のあるエラー ログが作成されます。

于 2015-07-14T11:01:26.950 に答える