Wenn du eine Standard-Staging-Seite erstellst, die sich in einem Unterordner befindet, setzt WP STAGING die Permalinks-Option der Staging-Seite auf „Einfach“ und deaktiviert die Option „Beitragsname-Permalinks“. Dies stellt sicher, dass die Staging-Seite auf allen Servertypen korrekt geöffnet wird.
Contents
Die Pro-Version von WP STAGING hat die Option „Permalinks beibehalten„. Wenn du eine neue Staging-Seite erstellst und diese Option aktivierst, verwendet die Staging-Seite exakt die gleiche Permalink-Struktur wie die Live-Seite. Du findest diese Option unter WP STAGING > Settings > Keep Permalinks.
Wenn du diese Option aktivierst und die Staging-Seite dich zur Live-Seite weiterleitet oder einen 404-Fehler anzeigt, folge diesem Artikel!
Generell ist es in Ordnung, einfache Permalinks auf einer Staging-Seite zu verwenden. Oft besteht keine technische Notwendigkeit, benutzerdefinierte Permalinks zu aktivieren, um von einer Staging-Seite zu profitieren.
Wenn du dennoch benutzerdefinierte Permalinks auf deiner Staging-Seite aktivieren möchtest, um die gleiche Linkstruktur zu haben, musst du zunächst herausfinden, welcher Webserver auf deinem Server oder Hosting-Paket läuft.
Du musst auf das Admin-Dashboard deiner WordPress-Staging-Seite zugreifen, um die Beitragsname-Permalinks zu aktivieren.
Wenn du versuchst, auf das Admin-Dashboard deiner Staging-Seite zuzugreifen und die Staging-Seite dich zur Live-Seite weiterleitet, füge den Slug wp-admin am Ende der URL hinzu, z.B. https://example.com/stagingsite/wp-admin
Das ermöglicht dir den Zugriff auf den wp-admin deiner Website.
(Eine solche Weiterleitung kann auftreten, wenn du Sprach-Plugins wie WPML oder Polylang verwendest, die einen Sprach-Slug zur URL hinzufügen. Diese Plugins benötigen oft aktivierte Permalinks)
Apache Webserver
Wenn der Apache-Webserver deine Website bereitstellt, stehen die Chancen gut, dass suchmaschinenfreundliche Permalinks ohne zusätzliche Arbeit funktionieren.
Aktiviere einfach die Permalinks auf der Seite:
Staging Site > wp-admin > Settings > Permalinks
Es ist sehr wahrscheinlich, dass es von Anfang an gut funktioniert.
Wenn dies nicht das erwartete Ergebnis liefert und die Links auf der Staging-Seite einen Fehler 400 ausgeben, erstelle eine neue .htaccess-Datei und füge sie mit einem FTP-Client oder einem Dateimanager-Plugin in das Stammverzeichnis der Staging-Seite ein.
Der Inhalt dieser Datei sollte so aussehen:
# BEGIN WordPress
RewriteEngine On
RewriteBase /staging/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /staging/index.php [L]
# END WordPressErsetze den hervorgehobenen Text staging durch den Unterordnernamen, in dem sich die Staging-Seite befindet!
Apache Webserver | Multisites
Normalerweise kümmert sich WP STAGING darum und nimmt die notwendigen Anpassungen an der .htaccess vor, wenn du eine WordPress-Multisite klonst.
Die folgenden Regeln werden in einer .htaccess-Datei im Stammverzeichnis der Staging-Seite für Multisite in einer Subdomain und einem Unterordner platziert:
Multisite in Subdomain, z.B. staging.example.com
RewriteEngine On
RewriteBase /
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]Multisite in Unterordner, z.B. example.com/staging
RewriteEngine On
RewriteBase /staging/
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]Ersetze den hervorgehobenen Text staging durch den Unterordnernamen, in dem sich die Staging-Seite befindet!
Nginx Webserver
Wenn deine Website Nginx verwendet, versuche zunächst, suchmaschinenfreundliche Permalinks auf der Staging-Seite zu aktivieren. Wenn das nicht funktioniert, folge den Schritten unten, um Permalinks in Nginx zu aktivieren.
Öffne wp-admin und gehe zu Einstellungen > Permalinks, dann wähle Beitragsname.
To test, open your site’s front page and click any link.
If the page opens as expected, you are done. If it returns a 404 error, use the advanced steps below:
Erstelle einen neuen Serverblock in nginx.conf ähnlich dem folgenden Codeausschnitt:
location /staging{
try_files $uri $uri/ /staging/index.php?$args;
}Ersetze den hervorgehobenen Text staging durch den Unterordnernamen, in dem sich die Staging-Seite befindet!
Ändere auch den Pfad zur PHP-Socket-Datei, wenn er auf deinem System anders ist. Dies soll dir nur eine Vorstellung davon geben, was zu ändern ist. Verwende diese Werte nicht wortwörtlich, ohne zu prüfen, ob deine NGINX-Konfiguration anders ist.
Beachte, dass du vollen Zugriff auf deinen Server benötigst, um die obigen Schritte auszuführen. Wenn du keine Ahnung hast, was diese Zeilen bewirken, ist es möglicherweise am besten, jemanden um Hilfe bei den Änderungen zu bitten oder die Permalinks deaktiviert zu lassen.
Danach muss der Nginx-Server neu gestartet werden, und du kannst deine Staging-Seite mit aktivierten benutzerdefinierten Permalinks nutzen.
Dies erfordert immer die Einrichtung eines spezifischen Nginx-Blocks mit dem Ordnernamen der Staging-Seite.
Ein weiterer optionaler Ansatz ist es, einen Serverblock zu erstellen und Nginx automatisch eine Umschreibung durchführen zu lassen, wenn WordPress aus einem Unterordner geladen wird:
# Matches /<folder>/... – except for WP core folders
location ~ ^/(?!wp-admin|wp-content|wp-includes)([a-zA-Z0-9_-]+)(?:/|$) {
set $first_seg $1;
# First try static files/folders …
try_files $uri $uri/ @maybe_staging;
}
# Checks whether /<folder>/index.php exists; if so, rewrite there,
# otherwise fall back to the live front controller.
location @maybe_staging {
if (-f $document_root/$first_seg/index.php) {
rewrite ^ /$first_seg/index.php?$args last;
}
rewrite ^ /index.php?$args last;
}NGINX Webserver Multisites
WordPress Multisites benötigen eine etwas andere Konfiguration.
Unten findest du eine Beispiel-nginx.conf für Staging-Multisite in einem Unterordner.
Wir haben die relevanten Teile hervorgehoben. Nachdem du diese Konfiguration zu deiner nginx.conf hinzugefügt hast, musst du den NGINX-Server neu starten.
Wenn dein Server NGINX verwendet und du nicht weißt, wo du diese Konfiguration hinzufügen sollst, frage bitte deinen Hosting-Anbieter.
Staging-Seite im Unterordner, z.B. example.com/staging
server {
listen 80; listen [::]:80;
server_name example.com/staging;
root /var/www/multi; # This is the path to your multisite website
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/staging(/[^/]+)?(/wp-.*) /staging$2 last;
rewrite ^/staging(/[^/]+)?(/.*\.php)$ /staging$2 last;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location /staging/ {
try_files $uri $uri/ /staging/index.php?$args ;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}Ersetze den hervorgehobenen Text staging durch den Unterordnernamen, in dem sich die Staging-Seite befindet!
Staging-Seite in Subdomain, z.B. staging.example.com
Wenn sich deine Staging-Seite in einer Subdomain befindet, kannst du die gleiche Konfiguration wie oben verwenden, aber mit einer kleinen Änderung:
server {
listen 80; listen [::]:80;
server_name staging.example.com;
# Below should be the path to your staging site
root /var/www/multi/staging;
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$request_uri/ permanent;
rewrite ^/(/[^/]+)?(/wp-.*) /$2 last;
rewrite ^/(/[^/]+)?(/.*\.php)$ /$2 last;
}
location / {
try_files $uri $uri/ /staging/index.php?$args ;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php7-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}Ersetze den hervorgehobenen Text staging durch den Unterordnernamen, in dem sich die Staging-Seite befindet.
Bitnami (Apache)
Du musst zusätzliche Schritte unternehmen, wenn du WordPress in einer Bitnami-Instanz verwendest.
Beitragsname-Permalinks werden auf WordPress-Bitnami-Instanzen nicht standardmäßig unterstützt, da Bitnami keine .htaccess im Stammordner der Website verwendet. Jede .htaccess-Datei dort wird ignoriert.
Bitnami verwendet nicht die Standard-.htaccess-Datei im Stammverzeichnis deiner Website; stattdessen werden alle htaccess-Konfigurationen in einer Datei namens /opt/bitnami/apps/APPNAME/conf/htaccess.conf hinzugefügt.
Wenn du also Permalinks zum Laufen bringen möchtest, musst du die htaccess.conf ändern.
Gehe zu dieser Datei und füge Folgendes hinzu:
<Directory /opt/bitnami/apps/wordpress/htdocs/STAGING>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /STAGING/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /STAGING/index.php [L]
</IfModule>
</Directory>Eine weitere Option wäre, die Permalinks auf den einfachen Einstellungen zu belassen, dann musst du die htaccess.conf überhaupt nicht ändern.
Microsoft Azure
Azure verwendet den Microsoft IIS-Server und erfordert eine benutzerdefinierte web.config im Stammverzeichnis des Staging-Seiten-Webverzeichnisses.
Zunächst musst du die web.config-Datei auf der „Live„-Seite ansehen und dir den Regelnamen aus dieser Zeile notieren:
<rule name="WordPress: http://wordpress-arc.azurewebsites.net" patternSyntax="Wildcard">In diesem Beispiel ist es WordPress: http://wordpress-arc.azurewebsites.net.
Erstelle dann eine neue web.config-Datei im Verzeichnis der „Staging„-Seite mit folgendem Inhalt:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>
<rule name="staging" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule></rules>
</rewrite>
</system.webServer>
</configuration>Stelle sicher, dass diese Zeile:
<remove name="WordPress: http://wordpress-arc.azurewebsites.net"/>den gleichen Regelnamen hat wie in der web.config-Datei der Live-Seite definiert, der in unserem Beispiel WordPress: http://wordpress-arc.azurewebsites.net war.
Microsoft IIS
- Öffne zunächst die
web.config-Datei im Stammverzeichnis der Live-Seite und notiere dir diese Zeile:
<rule name=“WordPress: https://example.com/“ patternSyntax=“Wildcard“>
Besonders den Namen der Regel:WordPress: https://example.com/ - Erstelle dann eine neue
web.config-Datei im Verzeichnis der Staging-Seite mit diesem Codeausschnitt:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<remove name="WordPress: https://example.com/" />
<rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule></rules>
</rewrite>
</system.webServer>
</configuration>Stelle sicher, dass die Zeile <remove name="WordPress: https://example.com/" /> den gleichen „name“ hat wie in der web.config auf der Live-Seite.
Und stelle sicher, dass diese Zeile <rule name="WordPress: https://example.com/staging" patternSyntax="Wildcard"> den korrekten Verzeichnisnamen der Staging-Seite enthält.
