Drupal 7 redirect der URL ohne www zu der URL mit www
am 24.06.2015 - 16:34 Uhr in
Hallo zusammen,
wie der Titel schon sagt, versuche ich gerade die .htaccess zu editieren, um einen Redirect der URL ohne www zu der URL mit www hinzubekommen.
Es gibt zwar viele Beispiele, aber alle scheinen etwas älter zu sein und somit eine andere Syntax zu haben. Auch unsere aktuelle Seite auf Druapl 6 Basis hat eine .htaccess mit einem anderen Aufbau, daher weiß ich nicht, wie ich die von Drupal 7 und dieser Syntax editieren soll:
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Das wäre für den Live-Betrieb später.
Zu Testzwecken ist die Seite derzeit über eine Subdomain erreichbar, wo ich wiederum den anderen Fall bräuchte, sprich Umleitung der URL mit www auf die URL ohne www.
# To redirect all users to access the site WITHOUT the 'www.' prefix,
# (http://www.example.com/... will be redirected to http://example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
Welcher Teil der Domain / URL soll wo rein in der jeweiligen Variante? Habe versucht die Antwort bei Appache zu finden, aber auch dort sind die Beispiele anders...
Bei Drupal 6 stand als Hinweis, dass man den gewünschten Abschnitt auskommenteiren und anpassen soll. In Drupal 7 steht nicht von einer Anpassung, wie man sieht, also habe ich es auch nur mit dem Auskommentieren probiert, aber das klappt nicht.
Kann mir jemand helfen bitte?
- Anmelden oder Registrieren um Kommentare zu schreiben
Das ist ein simpler Apache
am 25.06.2015 - 12:36 Uhr
Das ist ein simpler Apache Rewrite und hat nichts mit Drupal 6 oder 7 zu tun...
In deine .htaccess muss folgendes rein, dann sollte das klappen.
Die Angabe der Domain ist dabei nicht notwendig - das ist HTTP_HOST
Du musst mal gucken ob du Apache 2.4 oder 2.2 verwendest - da unterscheidet sich die Syntax etwas
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Quelle:
https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-...
Danke für die
am 25.06.2015 - 16:16 Uhr
Danke für die Rückmeldung.
Dachte auch, dass es nichts mit Drupal zu tun haben dürfte, hatte dann aber überlegt, dass die Variablen / Platzhalter evtl. von Drupal abhängen könnten oder sowas. Aber ich denke es ist eher so, dass die ausgelieferte .htaccess in Drupal 6 und Drupal 7 einfach nur dem jeweils zu dem Zeitpunkt aktuellen Stand des Apache-Webserver entspricht und daher auch die Unterschiede.
Jedenfalls klappt Dein Beispiel leider nicht. Habe auch zwei Einträge in den FAQs von Hosteurope gefunden:
- https://faq.hosteurope.de/?cpid=12846
- https://faq.hosteurope.ch/view.php?mode=drucken&content_id=6881
aber auch das klappt nicht. Verstehe nicht, was da los ist... Vielleicht ist die Subdomain ein Problem?
Also dieses Beispiel von
am 25.06.2015 - 18:39 Uhr
Also dieses Beispiel von Hosteurope
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.nur-ein-beispiel.de$ [NC]
RewriteRule ^(.*)$ http://www.nur-ein-beispiel.de/$1 [R=301,L]
sollte eigentlich funktionieren (bei mir funktioniert es).
Allerdings gehe ich so vor:
Ich erstelle eine separate Apache Site für die Redirection und leg dann dort in den Document Root nur die .htaccess so wie oben beschrieben. So muss ich dann auch nicht auf .htaccess-Änderungen beim Drupal-Update achten.
Welche subdomain? Hast du das
am 03.07.2015 - 07:05 Uhr
Welche subdomain?
Hast du das Modul rewrite denn geladen?
Mit "apache2ct -t" kannst du einen Syntaxcheck durchführen. Möglicherweise ist das rewrite - Modul nicht geladen?
Wenn das alles nicht klappt musst du mal mit einem Minimalbeispiel für die Apacheconfig rüber kommen, ansonsten lässt sich hier nur wild weiter raten.
Gruß, sui
Wenn das Ziel nicht
am 03.07.2015 - 10:43 Uhr
Wenn das Ziel nicht automatisch generiert werden soll, finde ich folgende Lösung super:
# http://suchmaschinentricks.at/tipps-tricks/mod_rewrite.html
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.deineDomain\.com$
RewriteRule ^(.*)$ http://www.deineDomain.com/$1 [L,R=301]
Bedeutet:
leite alles, was nicht mit www.deineDomain.com ankommt auf www.deineDomain.com um
Sämtliche Parameter, Unterordner etc. werden durchgereicht, also www.irgendwas.ie/foo/bar/blabla.jpg wird zu www.deineDomain.ie/foo/bar/blabla.jpg
Mit www, ohne www, ganz egal.
Ist für meinen Fall ideal!
Michel
Michel
Hallo sui und Michel, danke
am 03.07.2015 - 15:41 Uhr
Hallo sui und Michel,
danke für Eure Antworten.
Kurz zu der Subdomain:
wie erwähnt, hatte ich an der neuen Webseite in einem geschützten Unterordner des www-Verzeichnisses gearbeitet. Damit all die internen (relativen) Links passen, habe ich darauf nicht über "www.example.com/drupal7" zugegriffen, sondern über eine Subdomain "www.drupal7.example.com".
Dass das ein Problem sein könnte, habe ich daswegen gedacht, weil es auf diese Art und Weise ja im Grunde 2 .htaccess-Dateien gab: eine für die richtige Domain (die aus http://example.com/... http://www.example.com/... machte) und dann eine im Unterverzeichnis, die aus Anfragen mit www. solche ohne www. machte. Deswegen dachte ich, die beiden könnten sich gegenseitig stören.
Nun habe ich inzwischen meine neue Seite scharf geschaltet und dabei in der .htaccess entsprechend dem Hinsweis den Block
# To redirect all users to access the site WITH the 'www.' prefix,
# (http://example.com/... will be redirected to http://www.example.com/...)
# uncomment the following:
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
aktiviert und es klappt. Also so gesehen hat sich Problem mehr oder weniger von alleine gelöst.
Den von Michel vorgeschlagenen Code
# http://suchmaschinentricks.at/tipps-tricks/mod_rewrite.html
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.deineDomain\.com$
RewriteRule ^(.*)$ http://www.deineDomain.com/$1 [L,R=301]
hatten wir so in der Form (so ähnlich) in der bisherigen .htaccess der alten Installation, glaube ich.
Was genau heißt "Wenn das Ziel nicht automatisch generiert werden soll"? Hat die erste Variante irgendwelche Nachteile?