目前 htaccess 拒绝所有用户。我只想允许所有用户访问来自 wordpress 的 JSON 源
从 htaccess 文件的位置来看,feed url 是:
./row/wordpress/wp-json/wp/v2/screen
问题
据我所知,这是一个由重写规则创建的“虚拟”URL。由于它不是实际文件,而只是一个端点,我如何允许任何用户访问它?
当前尝试
这是我目前的尝试,阻止所有没有密码的用户。我的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
使我的 if 语句无用。
笔记
如果您需要支持 PUT 或其他,您必须添加它。[A-Z]{3}
或者[A-Z]{3-6}
后者将对所有内容开放。