Apache 合併位置部分(再次)

Apache 合併位置部分(再次)

我讀這個答案前段時間提出了一個類似的問題,它很有意義並且與 Apache 2.4 文件相符。但我有以下經驗,這似乎與該答案和文件相矛盾。考慮以下指示:

<Directory "/opt/lampp/htdocs/foo">
    AuthName "foo user"
    AuthType Basic
    Authuserfile /opt/lampp/passwds/foo.users
</Directory>
<VirtualHost *:80>
    ServerName   foo.example.com
    DocumentRoot "/opt/lampp/htdocs/foo/public"
    ErrorLog     "logs/foo.error_log"
    <Location />
        Require valid-user
    </Location>
    <Location /wp/feed>
        Require all granted
    </Location>
    CustomLog    "logs/foo.access_log" combined
</VirtualHost>

顯然,其目的是透過 http 基本驗證來保護所有 url,除了對於下面的網址/wp/feed。但是重新載入 apache 後,我在訪問 時收到了輸入憑證的提示/wp/feed。該 url 與兩個位置路徑都匹配,因此 apache 應該已處理Require valid-user後跟Require all granted,並且不應該提示我。只是為了“好玩”,我嘗試切換位置區塊的順序,但仍然收到提示。我發現唯一能按我的預期工作的就是完全刪除“/”的位置區塊。對我來說,這也是意想不到的行為,因為在這種情況下,根本沒有任何Require valid-user指令應該應用於不匹配的 url /wp/feed。然而它們被應用了,因為我收到了所有不匹配的網址的提示/wp/feed

誰能解釋一下嗎?我是否只是錯過了理解答案的機會?文件

我使用 nginx 指令指定此行為沒有任何問題,其中最長的前綴匹配通常會獲勝。如果我得到的確實是預期的行為,那麼我怎麼能透過 apache 得到我想要的東西呢?

相關內容