現在、htaccess はすべてのユーザーを拒否しています。WordPress からの JSON フィードのみをすべてのユーザーがアクセスできるようにしたいです。
htaccess ファイルの場所から、フィード 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 で基本的なパスワード認証をバイパスできるようにする 2 つの異なる方法を次に示します。
オプション 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}
後者はすべてに開かれます。