0

我正在尝试编写一个RewriteRule来缩短Monitorix URL,如下所示:

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 回答