Unterverzeichnis zur WP-CONTENT-URL mit HTACCESS in WordPress Multisite hinzufügen

Lesezeit: 5 Minuten

Ich bin dabei, meine Single-Site-WordPress-Installation in eine Multi-Site-Installation umzuwandeln. Ich versuche, das kaputte CSS/JS von meiner Hauptseite aus zu reparieren.

Ich habe derzeit zwei Websites in meinem Netzwerk:

Meine Multi-Site-Installation befindet sich in einem Unterverzeichnis, das wir “WordPress“. So sieht der Dateipfad aus public_html/wordpress.

Mein Ziel ist es, dass keine Seite das Unterverzeichnis “wordpress” in der URL hat. Alles scheint zu funktionieren, außer defektem CSS und JS auf der primären Seite (die sekundäre Seite sieht gut aus).

Beim Untersuchen des Codes zeigen alle CSS- und JS-Aufrufe auf http://www.example.com/wp-content/ aber die Dateien werden dort nicht gefunden. Die Dateien werden gefunden, wenn ich zu gehe http://www.example.com/wordpress/wp-content in meinem Browser. Ich möchte den WordPress-Ordner ausblenden und trotzdem die Dateien abrufen können.

Ich bin verwirrt, wie ich die HTACCESS-Datei einrichten soll. Ich habe bereits einige erste Änderungen daran vorgenommen, um die Multi-Site innerhalb des Unterverzeichnisses zum Laufen zu bringen. Dies waren alles folgende Anleitungen, die ich auf StackOverflow und anderswo online gefunden habe, in Bezug darauf, wie Sie Ihre Site in eine Multi-Site mit Unterverzeichnis verschieben und das Unterverzeichnis ausblenden. Ich habe nichts über die Behebung des defekten CSS/JS-Problems gefunden.

Ich dachte, ich müsste eine oder mehrere von 3 HTACCESS-Dateien aktualisieren.

1.) public_html/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /wordpress/index.php [L] 
</IfModule>

2.) public_html/wordpress/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
</IfModule>

3.) public_html/wordpress/wp-content/.htaccess
Diese Datei existierte nicht, aber ich habe sie erstellt. Mein Gedanke war, dass Dateien ohne das WordPress-Unterverzeichnis aufgerufen werden, aber sie müssen sich so verhalten, als hätten sie das Unterverzeichnis in sich. Aktuell zum Beispiel http://www.example.com/wp-content/uploads/image.jpg ist aber kaputt http://www.example.com/wordpress/wp-content/uploads/image.jpg funktioniert. Ich möchte, dass es umgekehrt ist, oder ich möchte, dass beide Wege funktionieren.

<IfModule mod_rewrite.c>
RewriteEngine on
# ADD WORDPRESS IF URL DOES NOT HAVE IT
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule ^(.*)$ /wordpress/$1
</IfModule>

Ich habe versucht, den verschiedenen HTACCESS-Dateien verschiedene Zeilen hinzuzufügen, aber keine davon hat funktioniert. Ich bin mir auch nicht sicher, mit welcher Zeilennummer ich eine neue Regel einfügen soll. Es ist möglich, dass eine meiner neuen Regeln richtig ist, aber an der falschen Stelle steht. Unten ist eine, von der ich wirklich dachte, dass sie funktionieren würde, aber nicht funktionierte.

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]

  • Ich denke, die zweite wird generiert, nachdem Sie Multisite aktiviert haben. Wenn es stimmt, ist die richtige Stelle in der ersten “htaccess”-Datei. Sie brauchen die dritte Datei sicher nicht

    – BlueSuiter

    3. November um 4:20 Uhr


  • Ja, das ist wahr. Die zweite stammt aus Anleitungen, die ich online gefunden habe, um die Multi-Site-Funktion zu aktivieren. Ich habe die dritte htaccess-Datei entfernt und den Code in die erste htaccess-Datei (die unter public_html root) eingefügt, aber es hat sich nichts geändert.

    – Bowlerae

    4. November um 1:45

Benutzeravatar von Valeriu Ciuca
Valeriu Ciuca

Zuerst sollten Sie alle entfernen .htaccess Dateien und behalte nur die eine im Stammverzeichnis: public_html/.htaccess

Zweitens funktioniert Ihre letzte Regel nicht, weil sie etwas falsch ist.

Sie sollten es ändern von:

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]

Zu:

RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,NC]

Weil Sie den Anfang nicht brauchen / und Sie brauchen keine 301-Weiterleitung. Du willst deine behalten wordpress Ordner ausgeblendet und ordnen Sie einfach die angeforderten URLs zu wp-content/(.*) zu wordpress/wp-content/$1

Außerdem muss diese Regel die erste in Ihrer .htaccess-Datei sein, die Vorrang vor den folgenden standardmäßigen WordPress-Regeln hat. Ihr letztes und nur .htaccess aus public_html/ sollte so aussehen:

RewriteEngine On
RewriteBase /
RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,nc]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Ich hoffe es hilft dir.

Benutzeravatar von mlegrix
mlegrix

Sie sollten nicht mehrere einrichten müssen .htaccess Dateien in Ihren Unterverzeichnissen.

Das einzige .htaccess Datei, die geändert werden muss, befindet sich im Stammverzeichnis der Anwendung. In Ihrem Fall scheint es Ihr zu sein public_html/.htaccess oder Ihre public_html/wordpress.

Jetzt generiert WordPress standardmäßig eine .htaccess Datei in diesem Verzeichnis, die etwa so aussieht:

# 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

Um Ihre URLs umzuschreiben, müssen Sie Ihre RewriteRules hinzufügen vor dem WordPress-Codeblock. Da RewriteRules von oben nach unten abgearbeitet werden, wenn die Anfrage zuerst umgeschrieben wird index.php durch den WordPress-Block, dann wird Ihre Regel niemals verarbeitet.

Daher Ihre RewriteRule:

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]

sollte ausreichen, wenn es an der Spitze des Stammverzeichnisses platziert wird .htaccessund entfernen Sie die .htaccess Datei in den Unterverzeichnissen

Die meisten Multisite-Netzwerke werden im Stammverzeichnis Ihrer Site installiert. Das bedeutet, wenn Ihr Server example.com verwendet, ist dies die URL für Ihre Basis-Site im Netzwerk.

Wenn Sie WordPress Multisite in einem Unterverzeichnis installiert haben, können Sie keine Subdomains verwenden.

Wenn Sie bereits eine Single-Site-Installation auf example.com haben und eine weitere WordPress-Installation in einem Unterverzeichnis hinzufügen, auf dem Multisite ausgeführt wird, lautet die Adresse example.com/wordpress.

Jede Website, die Sie in Ihrem neuen Netzwerk erstellen, befindet sich unter example.com/wordpress/my-new-site. Das Erstellen eines Unterverzeichnisses wäre hier unmöglich, da es sich an einer Adresse wie example.com/wordpress/my-new-site.network befinden müsste, was einfach nicht funktioniert.

1435590cookie-checkUnterverzeichnis zur WP-CONTENT-URL mit HTACCESS in WordPress Multisite hinzufügen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy