erzwungenes www mit mod_rewrite

Apache, Lighttpd, nginx, Cherokee
schnurpel
Posts: 9
Joined: 2008-01-25 17:17

erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-04-30 23:59

Hallo Leute,

auf einem Webserver möchte ich gerne, dass alle Anfragen an domain.com per rewrite rule auf http://www.domain.com/ umgeschrieben werden.
Das habe ich hinbekommen mit folgenden Zeilen.

Code: Select all

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Wie kann ich den gleichen Effekt für die https Variante der gleichen Domain erreichen?
Also theoretisch so:

Code: Select all

RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]


Das funktioniert so aber nicht, weil die zweite Regel nicht ausgeführt wird, da sich die erste Regel ja bereits verantwortlich fühlte und alles auf http://www.domain.com umschreibt.

Also schonmal besten Dank fürs lesen und vielleicht auch antworten.

Steffen
Last edited by schnurpel on 2008-05-01 00:34, edited 1 time in total.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: erzwungenes www mit mod_rewrite

Post by Joe User » 2008-05-01 00:22

Code: Select all

RedirectMatch permanent /(.*)  http://www.domain.tld/$1
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

schnurpel
Posts: 9
Joined: 2008-01-25 17:17

Re: erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-05-01 00:33

Hallo, besten Dank schonmal für deine Antwort.

RedirectMatch permanent /(.*) http://www.domain.tld/$1


Das kann ich wahrscheinlich so nicht nutzen, weil es noch eine Subdomain https://shop.domain.tld geben wird. Ausserdem noch https://webmail.domain.tld.
Das wäre mit dieser permanenten Umleitung nicht möglich.

Aber danke schonmal

Steffen

schnurpel
Posts: 9
Joined: 2008-01-25 17:17

Re: erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-05-01 01:29

Ich habs gefunden.

Ich versteh das so:
Alles was nicht mit www beginnt und auf Port 443 läuft wird nach https://www.domain.tld umgeschrieben.

Code: Select all

RewriteCond %{HTTP_HOST} !^www.domain.tld
RewriteCond %{SERVER_PORT} ^443
RewriteRule ^(.*)$ https://www.domain.tld/$1 [r=301,L]

Und hier wird alles was nicht mit www auf domain.tld beginnt, wird nach http://www.domain.tld umgeschrieben.

Code: Select all

RewriteCond %{HTTP_HOST} !^www.domain.tld
RewriteRule ^(.*)$ http://www.domain.tld/$1 [r=301,L]


Jetzt stellt sich mir aber noch die Frage, wie im obigen Beispiel die Subdomain webmail.* und shop.* vom umschreiben ausschließen kann?

Beste grüße
Steffen

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: erzwungenes www mit mod_rewrite

Post by Roger Wilco » 2008-05-01 11:02

schnurpel wrote:Jetzt stellt sich mir aber noch die Frage, wie im obigen Beispiel die Subdomain webmail.* und shop.* vom umschreiben ausschließen kann?

Mit weiteren Bedingungen (RewriteCond) analog zu deiner ersten Bedingung.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: erzwungenes www mit mod_rewrite

Post by Joe User » 2008-05-01 12:13

schnurpel wrote:
RedirectMatch permanent /(.*) http://www.domain.tld/$1


Das kann ich wahrscheinlich so nicht nutzen, weil es noch eine Subdomain https://shop.domain.tld geben wird. Ausserdem noch https://webmail.domain.tld.
Das wäre mit dieser permanenten Umleitung nicht möglich.

Doch, es ist die gleiche Umleitung wie die die Du gerade mühsam und Ressourcen verschwendend per mod_rewrite nachbildest. Zudem funktioniert mein Vorschlag auch bei SSL-VHosts, wo Deine Lösung dank Deiner Nutzung von HTTP_HOST ganz böse auf die Nase fällt...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

schnurpel
Posts: 9
Joined: 2008-01-25 17:17

Re: erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-05-01 14:47

Ich hab mich von deinen Argumenten überzeugen lassen. Nachdem ich diese Zeile innerhalb der VirtualHost Directive eingebaut hatte, hat mir der Browser eine Unendlichschleife bei den Anfragen angezeigt und stellte die Seite nicht mehr dar.

Code: Select all

RedirectMatch permanent /(.*) https://www.domain.tld/$1


Ist es nicht so, dass egal was aufgerufen wir nach https://www.domain.tld geleitet wird, dieser folgende Aufruf dann wieder nach https://www.domain.tld geleitet u.s.w.?

Beste Grüße und danke fürs mitdenken

Steffen

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: erzwungenes www mit mod_rewrite

Post by freddy36 » 2008-05-01 14:56

ich würde sowas entweder direkt im script erledigen lassen oder nen eigenen catch-all vhost für die Domain wo dann alles stupide weitergeleitet wird.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: erzwungenes www mit mod_rewrite

Post by Joe User » 2008-05-01 15:48

In welchen Virtualhost hast Du die Zeile eingefügt? Poste bitte den Virtualhost-Container...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

schnurpel
Posts: 9
Joined: 2008-01-25 17:17

Re: erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-05-01 16:12

Joe User wrote:In welchen Virtualhost hast Du die Zeile eingefügt? Poste bitte den Virtualhost-Container...


so hatte ich es stehen.

Code: Select all

<VirtualHost x.x.x.x:80>
        ServerName   www.domain.tld
        ServerAlias  domain.tld
        UseCanonicalName Off
        ServerAlias  *.domain.tld
        ServerAdmin  "me@domain.tld"
        DocumentRoot /var/www.domain.tld/httpdocs
        CustomLog  /var/www.domain.tld/logs/access.log combined
        ErrorLog   /var/www.domain.tld/logs/error.log

      RedirectMatch permanent /(.*) http://www.domain.tld/$1

        <Directory /var/www.domain.tld/httpdocs>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
        </IfModule>
                Options -Includes -ExecCGI
        </Directory>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
</VirtualHost>

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: erzwungenes www mit mod_rewrite

Post by Joe User » 2008-05-01 16:56

Mit dem ServerAlias kann keine der beiden Lösungen funktionieren...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: erzwungenes www mit mod_rewrite

Post by freddy36 » 2008-05-01 17:37

Du müsstest noch entsprechende Ausnahmen (für www, webmail, etc.) deklarieren.

Sowas sollte auch funktionieren, ist deutlich unkomplizierter ;)

Code: Select all

<VirtualHost x.x.x.x:80>
        ServerName   www.domain.tld
        UseCanonicalName Off
        ServerAdmin  "me@domain.tld"
        DocumentRoot /var/www.domain.tld/httpdocs
        CustomLog  /var/www.domain.tld/logs/access.log combined
        ErrorLog   /var/www.domain.tld/logs/error.log

        <Directory /var/www.domain.tld/httpdocs>
        <IfModule mod_php5.c>
                php_admin_flag engine on
                php_admin_flag safe_mode off
        </IfModule>
                Options -Includes -ExecCGI
        </Directory>
        <IfModule mod_php5.c>
                php_admin_flag engine off
        </IfModule>
</VirtualHost>

<VirtualHost x.x.x.x:80>
        ServerName   domain.tld
        ServerAlias  *.domain.tld
        CustomLog  /var/www.domain.tld/logs/access.log combined
        ErrorLog   /var/www.domain.tld/logs/error.log

        RedirectMatch permanent /(.*) http://www.domain.tld/$1
</VirtualHost>

schnurpel
Posts: 9
Joined: 2008-01-25 17:17

Re: erzwungenes www mit mod_rewrite

Post by schnurpel » 2008-05-20 14:47

Danke, das * im ServerAlias hatte ich nicht ernstgenommen...

Beste Grüße

Steffen