Dot-Htaccess

htaccess 允許特定路徑

  • July 20, 2019

目前 htaccess 拒絕所有使用者。我只想讓所有使用者都可以訪問來自 wordpress 的 JSON 提要

從 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

由於虛擬路徑(由 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}後者將對所有內容開放。

這裡有兩種不同的方法來允許單個 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>

引用自:https://serverfault.com/questions/898665