Angenommen, alle Installationen befinden sich auf derselben Instanz und können daher dieselben Dateien gemeinsam nutzen. Dann müssen Sie hauptsächlich alle benutzerdefinierten Inhalte außerhalb der Hauptordner von WordPress speichern.
Also wollen Sie zuerst irgendwo eine neue Kopie von WordPress, unberührt (und unberührbar, der springende Punkt ist, eine einzige Kopie zu haben, oder?).
Als Nächstes verwenden Sie Hardlinks oder Symlinks, um diese Dateien an anderer Stelle zu spiegeln. Normalerweise verwenden Sie in Unix-ähnlichen Umgebungen ln -s
Symlinks. Wie dies speziell zu tun ist, bleibt dem Leser überlassen, aber im Wesentlichen, wenn Sie Ihr WordPress in / example / wp haben, würden Sie so etwas ln -s /example/wp /home/username/public_html/wp
oder so etwas tun . Wenn Sym-Links Probleme verursachen, wechseln Sie stattdessen zu Hardlinks.
Die beiden wichtigsten Dinge, die sich im Hauptordner von WordPress befinden, aber benutzerdefiniert sind und nicht Teil von "core" sind wp-config.php
, sind Ihre Datei und der gesamte wp-content
Ordner. Wir müssen diese also für jede Site außerhalb des Hauptordners / wp abrufen. Beides ist möglich.
Die Datei wp-config.php ist einfach, da WordPress standardmäßig auch ein Verzeichnis von sich aus überprüft. Wenn sich Ihr wp-Ordner in befindet /home/username/public_html/wp
, /home/username/public_html/wp/wp-config.php
sucht WP nach , aber wenn dies nicht der Fall ist , wird auch danach gesucht /home/username/public_html/wp-config.php
. Machen Sie einfach Ihre wp-config.php-Dateien im obigen Verzeichnis.
Sie können den Ordner wp-content außerhalb des Hauptverzeichnisses wp neu positionieren, indem Sie Ihrer Datei wp-config.php Code wie folgt hinzufügen:
define( 'WP_CONTENT_DIR', '/home/username/public_html/custom-content' );
define( 'WP_CONTENT_URL', 'http://example.com/custom-content');
Und dann erwartet WordPress, dass der Inhalt und alles darin stattdessen dort leben. Der Ordner wp-content im Verzeichnis / wp wird vollständig ignoriert. Sie müssen diesen Ordner erstellen und Ihre Themen / Plugins / Uploads dort ablegen.
Der letzte Schritt ist die Verwendung von .htaccess (oder einiger anderer Konfigurationsdateien, wenn Sie Apache nicht verwenden). Sehen Sie den Ordner / wp im Stammverzeichnis als sichtbar an, als ob er dort wäre. Das ist nicht schwierig, es erfordert nur ein wenig Nachdenken. Die normalen WordPress .htaccess-Regeln (für nicht standardmäßige Permalinks) weisen Apache im Wesentlichen an, alle Anforderungen an die Hauptdatei index.php von WordPress umzuleiten, wenn die Anforderung nicht auf eine tatsächlich vorhandene Datei verweist. Dadurch können hochgeladene Bilder und dergleichen direkt außerhalb von WP funktionieren.
Hier ist ein Beispielregelsatz, den Sie im Verzeichnis /home/username/public_html/.htaccess verwenden können, um dies nachzuahmen, aber auch das Verzeichnis / wp berücksichtigen.
Options -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wp/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ wp/index.php [L]
Im Wesentlichen sagen diese Regeln zwei Dinge aus.
Erstens: Wenn die angeforderte URL nicht / wp / enthält und keine Datei oder kein Verzeichnis vorhanden ist, ändern Sie die URL mithilfe eines internen Umschreibens, um / wp / vor sich zu haben. Dies hat zur Folge, dass alle URLs von http://example.com/whatever auf http://example.com/wp/whatever neu zugeordnet werden . Grundsätzlich funktioniert es so, als ob / wp / tatsächlich im Stammverzeichnis der Site wäre.
Die zweite Regel ändert Anforderungen für die Stamm-URL (nur das /) in die Datei /wp/index.php. Dies ist möglicherweise nicht unbedingt erforderlich, funktioniert aber bei mir.
Dadurch kann das Verzeichnis / wp sozusagen "rein" bleiben, und Sie können Symlinks oder Hardlinks verwenden, um die One-True-WP-Installation an einem anderen Ort zu belassen, der von ortsspezifischen Dingen unberührt bleibt.
Beachten Sie, dass viele schlecht geschriebene Plugins (und sogar einige Themen) davon ausgehen können, dass sie sich im Hauptordner von wp-content befinden. Alles, was etwas Dummes wie include '../../../wp-load.php';
oder ähnliches tut, wird durch diesen Ansatz zerstört. Dieser Fehler ist seitens des Plugins / Themes. Kein Plugin / Theme sollte jemals wp-load enthalten .