Page 1 of 1

erzwungenes www mit mod_rewrite

Posted: 2008-04-30 23:59
by schnurpel
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

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 00:22
by Joe User

Code: Select all

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

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 00:33
by schnurpel
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

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 01:29
by schnurpel
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

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 11:02
by Roger Wilco
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.

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 12:13
by Joe User
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...

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 14:47
by schnurpel
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

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 14:56
by freddy36
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.

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 15:48
by Joe User
In welchen Virtualhost hast Du die Zeile eingefügt? Poste bitte den Virtualhost-Container...

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 16:12
by schnurpel
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>

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 16:56
by Joe User
Mit dem ServerAlias kann keine der beiden Lösungen funktionieren...

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-01 17:37
by freddy36
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>

Re: erzwungenes www mit mod_rewrite

Posted: 2008-05-20 14:47
by schnurpel
Danke, das * im ServerAlias hatte ich nicht ernstgenommen...

Beste Grüße

Steffen