2012-06-04 32 views
2

好消息是我已經解決了我的問題,壞消息是我不明白這個問題!Apache2(HTTPD)Location是否標記通配符匹配?

URL: http://host:port/a/b 

的httpd.conf

<Location /a> 
ProxyPass to Server.... 
</Location> 

<Location /b> 
ProxyPass to some other Server 
</Location> 

在此設置中,我對http://.../a/b要求帶我到「一些其他的服務器」,而不是我能得到預期的「服務器」

我通過強制執行更多「正則表達式」行爲來預期行爲,並使用表達式開頭(又名:

<Location ~ "^/a"> 
ProxyPass to Server.... 
</Location> 

如果這就是我必須這樣做的,那很好。但是這種情況似乎不太清楚。

文檔來源: 的位置標籤http://httpd.apache.org/docs/2.0/mod/core.html#location httpd的文檔似乎暗示在非正則表達式的方式(也就是,沒有了〜)爲什麼他們有一段介紹如何使用通配符不使用通配符(這是該位置的匹配和正則表達式)。此外,最後的斜線討論並不意味着它也使用通配符。

所以,我只是假設我已經發現了我的Apache版本中的一些錯誤。或者,也許我只是使用過於類似的URL結構,無法理解Apache文檔。幫助我,StackOverflow!

+0

注意:如果我切換位置A和位置B的順序,這種行爲是相反的。所以HTTPD顯然會發現最後一場比賽(不管最佳比賽是我的預期)。 –

+0

所以我想答案是否定的?你能迴應並將其標記爲已回答嗎?謝謝 – ALOToverflow

回答

2

如果你指的是Apache docs,它明確指出,

正則表達式也可以使用,增加了〜 性格。例如:

<Location ~ "/(extra|special)/data">

將匹配包含 的子/額外/數據/或特殊/數據的URL。

+0

...,否則使用通配符。 –

+0

正如你在我的例子中看到的,我沒有指定通配符。 我認爲適用的規則是: 「指定的位置,加上一個結尾的斜槓,是URL的路徑組件的前綴(也被視爲上下文根)。」 in this情況下,/ a/b永遠不會有/ b作爲上下文根,並且不應該與此規則相匹配(但確實如此)。 –