目前 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}
中,後者將向所有內容開放。