0

Monitorix URL を次のようRewriteRuleに短縮するために、次のように記述しようとしています。

http://10.0.11.11:8089/monitorix-cgi/monitorix.cgi?mode=multihost.all&graph=all&when=1day&color=black

好きに:http://10.0.11.11:8089/mon/all

そこで、これを/etc/apache2/apache2.conf (Debian wheezy 上) の最後に追加しました:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^/?mon/all/?$ monitorix-cgi/monitorix.cgi?mode=multihost.all&graph=all&when=1day&color=black [NC,L]
</IfModule>

しかし、それは機能していません。私は得ます:The requested URL /mon/all was not found on this server.私はここで同様の問題についていくつかの投稿を見つけましたが、実際には何もうまくいきませんでした. 私は何が間違っているのですか?実際の問題を引き起こしているのは、URL のポート番号ですか。乾杯!!


更新RewriteLog(@williamt の提案による):

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteLog "/var/log/apache2/rewrite.log"
  RewriteLogLevel 9
  RewriteRule ^/mon/all/?$ http://10.0.11.11:8089/monitorix-cgi/monitorix.cgi?mode=multihost.all&graph=all&when=1day&color=black [NC,L]
</IfModule>
4

1 に答える 1

0

置換に完全なドメイン名を含めます。

RewriteRule ^/mon/all/?$ http://10.0.11.11:8089/monitorix-cgi/monitorix.cgi?mode=multihost.all&graph=all&when=1day&color=black [NC,L]

(私はこれをテストしました)。

これを読んでいる他の人の利益のため/?$に、パターン内の は、後で一致する/mon/all/mon/all/、何も一致しないことを意味します。疑問符は前のトークン (終了スラッシュ) をオプションにし、$ は文字列の終わりを示します。

ヒント: RewriteLogLevelを使用して、書き換えルールをテストしているときに何が起こっているかを正確に確認します (後でオフにすることを忘れないでください)。特に、行末の「一致」と「不一致」を探します。

于 2013-07-11T15:45:52.333 に答える