it-swarm.com.de

Domain-Alias ​​beibehalten

Ich habe ein Single-Site-Wordpress auf example.com installiert. Das DNS ist so konfiguriert, dass www.example.com ein ALIAS von example.com ist. Der Client möchte, dass der Benutzer www sieht. auf ihrer Navigationsleiste, wenn sie es betraten, so ist dies wichtig.

Ich habe ihre Website auf einem Apache-Server gehostet, auf dem cpanel ausgeführt wird. Auf dem cpanel ist die Domain als example.com festgelegt. Bevor ich WordPress installiert habe, wurde bei der Eingabe von www.example.com das Verzeichnis aufgerufen und das WWW beibehalten. auf der Navigationsleiste, so toll.

Nachdem ich aber WordPress installiert habe, ist das www. wird entfernt. Als ich ein Redirect-Trace erstellt habe, habe ich dieses seltsame 302-Redirect gefunden:

http://www.example.com
Status: 302 Found
Code:   302
Date:   Thu, 24 Aug 2017 00:23:08 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
Location:   https://example.com
Content-Length: 346
Connection: close
Content-Type:   text/html; charset=iso-8859-1

Ich habe die htaccess-Datei von WordPress geändert, um ssl zu erzwingen, aber ich dachte, dies ist eine 301:

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_Host} eq "example.com"
ErrorDocument 403 https://example.com

Okay, wie auch immer. Also habe ich diesen Codeabschnitt entfernt, die URL-Leiste behält das WWW immer noch nicht bei. Diesmal erhalte ich eine 301-Weiterleitung:

http://www.example.com
Status: 301 Moved Permanently
Code:   301
Date:   Thu, 24 Aug 2017 00:35:22 GMT
Server: Apache/2.4.16 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4
X-Powered-By:   PHP/5.6.16
Location:   http://example.com/
Content-Length: 0
Connection: close
Content-Type:   text/html; charset=UTF-8

Ich weiß nicht, wo ich sonst suchen soll. Was muss ich in cpanel, htaccess oder wordpress tun, damit die URL-Leiste das WWW beibehält?.

1
Kumar

Sie müssen den kanonischen Hostnamen (dh mit www) im WordPress-Dashboard festlegen ... Unter Einstellungen> Allgemein müssen Sie die entsprechenden Eigenschaften "WordPress-Adresse (URL)" und "Site-Adresse (URL)" festlegen.

Alternativ können diese Werte fest codiert in wp_config.php angegeben werden, indem die Konstanten WP_HOME bzw. WP_SITEURL definiert werden.

Referenz:
https://codex.wordpress.org/Changing_The_Site_URL

SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_Host} eq "example.com"
ErrorDocument 403 https://example.com

Etwas abseits, aber dies ist ein sehr umständlicher (nicht empfohlener) Weg, um umzuleiten zu HTTPS. Ja, dies löst eine 302 (temporäre) und keine 301 (permanente) Umleitung aus. Dies wird nur aufgrund eines Nebeneffekts von ErrorDocument umgeleitet. Und es wird nur zum Dokumentenstamm weitergeleitet, die angeforderte URL geht verloren.

Dieser Code blockiert tatsächlich den Zugriff auf die reine HTTP-Site und löst einen 403 Forbidden aus. Da Sie eine absolute URL als zweites Argument für die benutzerdefinierte 403 festgelegt haben, löst Apache eine externe (302) Weiterleitung zur URL aus, dem Stammverzeichnis Ihrer Site.

Wenn Sie keinen Zugriff auf die Serverkonfiguration haben, wird diese Umleitung normalerweise mit mod_rewrite in .htaccess ausgeführt. Zum Beispiel:

RewriteCond %{HTTPS} !on
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

Dies müsste vor den vorhandenen WordPress-Direktiven in .htaccess stehen.


Sobald Sie den entsprechenden Hostnamen in WordPress festgelegt haben, können Sie sowohl HTTPS- als auch WWW-Umleitung in .htaccess ausführen, wenn Sie dies wünschen (dies wäre etwas effizienter). Zum Beispiel:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_Host} !www\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

Stellen Sie sicher, dass Sie Ihren Browser-Cache leeren, bevor Sie den Test durchführen.


Ich brauche das www. wird nur beibehalten, wenn der Benutzer es zuerst eingegeben hat.

Wenn Sie keinen bestimmten Grund dafür haben, ist dies im Allgemeinen eine schlechte Idee. Es wird möglicherweise doppelter Inhalt erstellt, obwohl Sie ein rel="canonical" -Tag im Abschnitt head festlegen können, um dies zu vermeiden, und Sie können in der Google Search Console eine Einstellung festlegen (um zu verhindern, dass beide Hosts indiziert werden). Aber die Statistiken werden zwischen ihnen aufgeteilt. Wie setzen Sie Cookies? Wenn Sie möchten, dass Cookies zwischen www und nicht www geteilt werden (Login, Sitzungen usw.), müssen Sie sicherstellen, dass Cookies auf der Apex-Domain gesetzt sind, unabhängig davon, auf welchen Host zugegriffen wird - ich glaube nicht, dass dies der Fall ist das Standardverhalten.

Wie auch immer, wenn Sie HTTP zu HTTPS umleiten möchten, aber den Host beibehalten möchten, auf den zugegriffen wurde (www-, nicht www- oder xyz-Alias), ist dies eine viel einfachere Umleitung, da Sie auf die Servervariable HTTP_Host verweisen können. Zum Beispiel:

RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
1
MrWhite

Das Ändern des kanonischen Hostnamens in WordPress bedeutet, dass der gesamte Datenverkehr jetzt zu WWW wird. In diesem speziellen Anwendungsfall nur, wenn der Benutzer als www eingeht. Verkehr sollten sie weiterhin sehen, www urls. Andernfalls sollten sie example.com so sehen, wie sie es eingegeben haben. Nachdem ich einige Nachforschungen angestellt hatte, stellte ich fest, dass eine Möglichkeit, dies zu tun, darin besteht, die folgenden Zeilen zu wp_config.php hinzuzufügen.

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_Host']);
define('WP_HOME', 'http://' . $_SERVER['HTTP_Host']);

Mein Verständnis dieses Codes ist, dass jede URL, die im DNS und im Cpanel als Alias ​​für example.com deklariert wurde, die WordPress-Site mit den erhaltenen URLs anzeigt.

Um auf MrWhites SSL-Ratschläge zurückzugreifen, habe ich seinen Code leicht geändert, um der Tatsache Rechnung zu tragen, dass zwei URLs (mit und ohne www) erlaubt sein müssen:

# Force SSL While Preserving www.#
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} www\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

# Force SSL for non-www. Traffic #
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_Host} !www\.
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]

Wenn ein dritter oder vierter usw. Alias ​​hinzugefügt werden muss, muss die RewriteCond präzisiert und zusätzliche Rewrite-Blöcke benötigt werden.

0
Kumar