2013-07-11 51 views
0

我想寫一個RewriteRule縮短Monitorix URL是這樣的:重寫規則在Debian縮短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

所以,我已將此添加/等/ apache2的/ apache2.conf(在Debian喘息)結尾:

<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

包含完整的域名替代:

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看到什麼,當你測試重寫規則(記得要關掉它之後)發生的事情 - 在該行的末尾特別是外觀的「匹配」和「不匹配」 。

+0

我沒有機會自己測試它,但它是令人驚訝的。我在Apache網站上瀏覽過很多文檔,其中沒有一篇介紹使用完整的域名。你能解釋一下這個替代實際上是如何工作的嗎? – MacUsers

+0

@MacUsers好點..我已經使用[FQDN](http://en.wikipedia.org/wiki/Fully_qualified_domain_name)解決了過去的奇怪問題,但它應該是可以的;實際上,我剛剛創建了一個測試PHP腳本,並使用'/test.php?mode=multihost ...'來替代URL,並且我可以傳遞整個查詢字符串而不會出現問題。你確定這不僅僅是因爲你在'monitorix.cgi'之前缺少一個/(如果我刪除了它,我得到一個400錯誤的請求錯誤,與你不同)。否則,請啓用rewritelog和發佈結果。 (我會更新我的答案,如果任何這對你有用...) –

+0

感謝williamt!某些原因,它仍然不適合我 - 我得到同樣的錯誤。任何你能想到的東西,我錯過了?我得到'404未找到'錯誤。乾杯!! – MacUsers