Debian上的RewriteRule缩短了URL

时间:2013-07-11 14:28:13

标签: apache http mod-rewrite debian

我正在尝试编写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>

1 个答案:

答案 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查看您在测试重写规则时发生的确切情况(请记得事后将其关闭) - 特别是要查找“匹配”和“不是 - ”匹配'在行尾。