htaccess erlaubt bestimmten Pfad

htaccess erlaubt bestimmten Pfad

Derzeit verweigert htaccess allen Benutzern den Zugriff. Ich möchte nur den JSON-Feed von WordPress für alle Benutzer zugänglich machen.

Vom Speicherort der htaccess-Datei aus lautet die Feed-URL:

./row/wordpress/wp-json/wp/v2/screen

Frage

So wie ich das verstehe, handelt es sich hier um eine „virtuelle“ URL, die durch Umschreiberegeln erstellt wurde. Da es sich nicht um eine tatsächliche Datei, sondern nur um einen Endpunkt handelt, wie erlaube ich jedem Benutzer den Zugriff darauf?

Aktueller Versuch

Hier ist mein aktueller Versuch, der alle Benutzer ohne Passwort blockiert. Mein FilesKnoten tut nichts.

// 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       

Frage

Wie kann ich den virtuellen Pfad ./row/wordpress/wp-json/wp/v2/screenfür alle Besucher sichtbar machen?

** bearbeiten **

Ich habe seitdem beides probiert

<Directory row/wordpress/wp-json/v2/>
    Allow from All
</Directory>

<Location row/wordpress/wp-json/v2/>
    Allow from All
</Location>

Ohne Erfolg verursachen beide einen 501

Antwort1

Hier sind zwei verschiedene Ansätze, um einer einzelnen URL, unabhängig davon, ob sie auf eine physische Datei verweist oder nicht, das Umgehen der grundlegenden Kennwortauthentifizierung zu ermöglichen:

Option 1: Erlauben Sie einer einzelnen URL den Passwortschutz:

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

Option 2: Kennwortschutz auf alle Anfragen anwenden, die nicht mit einer bestimmten URL übereinstimmen (diese Option erfordert 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>

Antwort2

Aufgrund der Art des virtuellen Pfads (erstellt von WordPress) musste ich THE_REQUESTstattdessen Folgendes verwenden:

<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
        Allow from All
        Satisfy Any
</If>

Die WordPress-Umleitung funktionierte wordpress/index.phpalso REQUEST_URInicht, da die URI /path/to/wordpress/index.phpmeine if-Anweisung immer unbrauchbar machte.

NOTIZ

Wenn Sie PUTs oder anderes unterstützen müssen, müssen Sie das hinzufügen. [A-Z]{3}Oder [A-Z]{3-6}wo Letzteres für alles geöffnet wird.

verwandte Informationen