htaccess 允许特定路径

htaccess 允许特定路径

目前 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}后者将对所有内容开放。

相关内容