htaccess 允許特定路徑

htaccess 允許特定路徑

目前 htaccess 正在拒絕所有用戶。我只想允許所有用戶訪問來自 wordpress 的 JSON feed

從 htaccess 檔案的位置來看,提要 URL 為:

./row/wordpress/wp-json/wp/v2/screen

問題

據我了解,這是由重寫規則建立的「虛擬」網址。由於它不是實際的文件而只是一個端點,我如何允許任何用戶訪問它?

目前的嘗試

這是我目前的嘗試,它阻止所有沒有密碼的用戶。我的Files節點什麼也沒做。

// root folder's .htaccess

AuthUserFile /var/www/domains/dev/.htpasswd
AuthType Basic
AuthName "Password Required"
Require user SecretUser
Order Deny,Allow
Deny from All

<Files "row/wordpress/wp-json/wp/v2/screen">
    Allow from all
</Files>

Satisfy Any       

問題

如何獲得./row/wordpress/wp-json/wp/v2/screen所有訪客都可以看到的虛擬路徑?

** 編輯 **

從那以後我都嘗試過

<Directory row/wordpress/wp-json/v2/>
    Allow from All
</Directory>

<Location row/wordpress/wp-json/v2/>
    Allow from All
</Location>

由於沒有成功,他們都導致了 501

答案1

以下是允許單一 url(無論是否引用實體檔案)繞過基本密碼驗證的兩種不同方法:

選項 1:透過密碼保護允許單一 URL:

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/domains/dev/.htpasswd
Require expr %{REQUEST_URI} == '/row/wordpress/wp-json/wp/v2/screen'
Require user SecretUser

選項 2:對與特定 URL 不符的所有請求套用密碼保護(此選項需要 Apache 2.4):

<If "%{REQUEST_URI} != '/row/wordpress/wp-json/wp/v2/screen'">
    AuthType Basic
    AuthName "Password Required"
    AuthUserFile /var/www/domains/dev/.htpasswd
    Require user SecretUser
</If>

答案2

由於虛擬路徑(由 wordpress 創建)的性質,我不得不使用THE_REQUEST

<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
        Allow from All
        Satisfy Any
</If>

wordpress 重定向使用wordpress/index.php所以使用REQUEST_URI不起作用,因為 uri 總是/path/to/wordpress/index.php讓 my if 語句無用。

筆記

如果您需要支援 PUT 或其他操作,您必須將其新增至[A-Z]{3}[A-Z]{3-6}中,後者將向所有內容開放。

相關內容