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
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