it-swarm.com.de

Platzieren Sie statische HTML-Dateien im Pfad unterhalb der WordPress-Seite

Ich habe eine WordPress-Instanz im Stammverzeichnis meiner Domain.

Eine WordPress-Seite befindet sich unter www.example.com/product/. Ich habe einige statische HTML-Dateien in einem Pfad darunter platziert, damit Besucher zu www.example.com/product/documentation/ wechseln können, in dem sich ein index.html und andere HTML-Dateien befinden.

Jetzt kann ich gut auf die statischen HTML-Dateien zugreifen, aber wenn ich zur WordPress-Site gehe (d. H. www.example.com/product/), erhalte ich einen 403 Forbidden-Fehler.

Wie kann ich die statischen HTML-Dateien unter dieser URL verfügbar machen, während der Zugriff auf die WordPress-Seite erhalten bleibt?

Hier ist meine .htaccess Datei (ich denke es ist die unveränderte Standardeinstellung)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Es tut mir leid, wenn diese Frage bereits beantwortet wurde, aber ich habe nur Fragen zu Problemen bei der Anzeige des statischen Inhalts und nicht des WordPress-Inhalts gefunden.

4
Johannes Dorn

Indem Sie ein physisches Verzeichnis erstellen, das mit einer (virtuellen) WordPress-URL identisch ist, haben Sie einen Konflikt verursacht. Die URL muss durch WP geleitet werden, aber der Standard-Front-Controller (der oben gezeigte .htaccess-Code) schließt physische Verzeichnisse ausdrücklich vom Umschreiben aus.

Der 403 Forbidden-Fehler tritt auf, weil Sie kein Verzeichnisindexdokument (z. B. index.html oder index.php) im Unterverzeichnis /product haben. (Und du willst auch keinen, nur für den Fall, dass du dich wunderst.)

Abhängig von Ihrer Site können Sie einfach die Verzeichnisprüfung im Front-Controller entfernen. Zum Beispiel (nur auskommentiert):

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Dies bedeutet, dass Anforderungen für any physische Verzeichnisse (nur das blanke Verzeichnis) nicht zugänglich sind und über WP weitergeleitet werden. Dies steht jedoch wahrscheinlich in Konflikt mit Ihrer /product/documentation/ URL. In diesem Fall können Sie so etwas wie die folgenden vor obigen Anweisungen hinzufügen:

RewriteRule ^product/documentation/$ /product/documentation/index.html [L]

(Andernfalls erhalten Sie WordPress 404, wenn ein physisches Verzeichnis angefordert wird, in dem die URL in WP nicht vorhanden ist.)

Alternativ können Sie explizit eine Ausnahme für dieses eine Unterverzeichnis machen und es manuell durch WP leiten (dh es in index.php umschreiben). Fügen Sie beispielsweise vor dem vorhandenen Front-Controller (oben in der Datei) Folgendes hinzu:

RewriteRule ^product/?$ /index.php [L]
1
MrWhite