htaccess は特定のパスを許可します

htaccess は特定のパスを許可します

現在、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.phpmy if ステートメントを役に立たなくするためです。

注記

PUT やその他のものをサポートする必要がある場合は、それを追加する必要があります。[A-Z]{3}または、[A-Z]{3-6}後者はすべてに開かれます。

関連情報