0

私はlighttpd 1.4.28を使用しています

これが私のリダイレクトルールです:

$HTTP["host"] =~ "^([^.]+\.[^.]+)$" {
        url.redirect = ( "^/(.*)" => "http://www.%0/$1" )
}

anydomain.anytld を www.anydomain.anytld にリダイレクトすることになっており、ここに書いたように魅力的に機能します (もちろん、%1 を使用しても機能します。これは括弧を参照するためです)。

しかし、トリガーの正規表現に見られる括弧のペアでのみ機能する理由については、私は困惑しています。

%0 は結果全体をキャッチするはずですよね? %1、%2 などとは異なり、括弧のペアを参照することさえありません。しかし、これらの括弧を削除すると、次のようになります。

$HTTP["host"] =~ "^[^.]+\.[^.]+$" {
        url.redirect = ( "^/(.*)" => "http://www.%0/$1" )
}

lighttpd を再起動しようとすると、次のエラーが発生します。

到達不能else条件2012-10-17 11:34:10: (configfile.c.918) ソース: /etc/lighttpd/lighttpd.conf 行: 173 位置: 14 パーサーが何らかの理由でここの近くで失敗しました: (EOL)

ありがとう !

4

1 に答える 1

0

これは、部分文字列%0全体または最初の式に一致するためです。これは、定義上、囲んでいるセットです。これにより、ネストされた(つまり)括弧を使用して、その全体をプルする、より複雑な正規表現を使用できます。私が理解できることから、それは Lighttpd の正規表現パーサーの構造です。()((()))

http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite

于 2012-10-17T09:45:16.677 に答える