我正在尝试编写RewriteRule
来缩短Monitorix网址,如下所示:
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>
答案 0 :(得分: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查看您在测试重写规则时发生的确切情况(请记得事后将其关闭) - 特别是要查找“匹配”和“不是 - ”匹配'在行尾。