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 Files
Knoten 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/screen
fü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_REQUEST
stattdessen Folgendes verwenden:
<If "%{THE_REQUEST} =~ m#^GET /sites/dawna/wordpress/wp-json/#">
Allow from All
Satisfy Any
</If>
Die WordPress-Umleitung funktionierte wordpress/index.php
also REQUEST_URI
nicht, da die URI /path/to/wordpress/index.php
meine 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.