Ich versuche, eine benutzerdefinierte Umleitungsregel zu schreiben, um einen Unterdomänennamen auf die entsprechende Seite umzuleiten.
Beispiel: wppage.example.com
→ example.com/wppage
Ich verwende den folgenden Code in meinem functions.php
:
function custom_rewrite_basic() {
$rewrite = add_rewrite_rule('([^/]+)/?$', 'index.php?pagename=$matches[1]', 'top');
}
add_action('init', 'custom_rewrite_basic');
Ich habe außerdem eine Platzhalterweiterleitung für alle Subdomains aus meinem DNS hinzugefügt und überprüft, ob mein .htaccess
die Standardregeln für WordPress mod_rewrite
enthält.
Ich weiß nicht warum, aber ich werde immer wieder auf meine Homepage weitergeleitet.
Was mache ich falsch?
Es ist besser, diese Art von Weiterleitungsregeln für Subdomains nicht in WordPress zu verwenden:
WordPress wird möglicherweise nicht richtig geladen, wenn Sie mit dem falschen Domänennamen oder der falschen Unterdomäne darauf zugreifen, da eine typische WordPress-Installation für eine bestimmte Domäne oder Unterdomäne ausgeführt werden soll.
Auch wenn Sie in der Lage sind, es zum Laufen zu bringen, lädt sich WordPress vor jeder Umleitung zuerst selbst und führt dann die Umleitung durch und lädt dann erneut, wenn die umgeleitete URL den Server erreicht. Das ist ein langsamer Prozess.
Tun Sie es stattdessen in .htaccess
. Wie die folgenden:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# custom rules for subdomain matching
RewriteCond %{HTTP_Host} ^([^.]+)\.example\.com$ [NC]
RewriteRule . http://example.com/%1 [R=301,L]
# default WordPress rules
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Dadurch werden alle sub.example.com
nach example.com/sub
umgeleitet.
Hinweis:Der obige CODE leitet auch
www.example.com
zuexample.com/www
um. Wenn Sie das nicht möchten, ändern Sie den obigen Abschnitt# custom rules for subdomain matching
wie folgt:
# to redirect www.example.com/* to example.com/*
RewriteCond %{HTTP_Host} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ "http://example.com/$1" [R=301,L]
# custom rules for subdomain matching
RewriteCond %{HTTP_Host} ^([^.]+)\.example\.com$ [NC]
RewriteRule . http://example.com/%1 [R=301,L]
Lesen Sie dieses Dokument. um mehr über Apache zu erfahren mod_rewrite
.
Stellen Sie außerdem sicher, dass mod_rewrite
FÜR .htaccess
auf Ihrem Server aktiviert ist.