Apache2 / mod_rewrite im Server-Kontext

Apache, Lighttpd, nginx, Cherokee
jack99
Posts: 25
Joined: 2007-06-15 13:54

Apache2 / mod_rewrite im Server-Kontext

Post by jack99 » 2007-07-14 11:33

Hallo zur Lösung eines Problem möchte ich das alle URL-Anfragen von mod_rewrite entsprechend umgeleitet werden noch bevor Sie sozusagen die vhost erreichen.

Dazu habe ich die folgenden mod_rewrite direktiven im globalen Server-Kontex eingefügt noch bevor die vhosts includet werden

Code: Select all

RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule (.*) http://www.google.de [L]

include /etc/apache2/sites-enabled/
Es sollen also alle Anfragen die nicht von der IP: 88.76.202.104 kommen Testweise an http://www.google.de umgeleitet werden.

Wenn ich nun eine Domain aufrufe die auf dem Server als vHost eingerichtet ist dann wird in mod_rewrite.log folgendes reingeschrieben:

(2) init rewrite engine with requested uri /
(3) applying pattern '(.*)' to uri '/'
(4) RewriteCond: input='127.0.0.1' pattern='!^88.76.202.104' => matched
(2) rewrite '/' -> 'http://www.google.de'
(2) implicitly forcing redirect (rc=302) with http://www.google.de
(1) escaping http://www.google.de for redirect
(1) redirect to http://www.google.de [REDIRECT/302]

Soweit ich das richtig interpretiere ist also nach den Logs zu urteilen die Umleitung nach http://www.google.de erfolgt. In Wirklichkeit wird jedoch nach wie vor die index-seite der aufgerufenen domain angezeigt und nicht die google-starteite?

Ich komme einfach nicht dahinter wieso es nicht funktioniert?

Vielen Dank im Voraus
jack

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: Apache2 / mod_rewrite im Server-Kontext

Post by dtdesign » 2007-07-14 12:37

Habe das mal lokal mit einem Apache getestet:

Code: Select all

RewriteEngine	On
RewriteCond		%{REMOTE_ADDR} !^127.0.0.2
RewriteRule		(.*)    http://www.google.de [L]
Die Anfrage kam von 127.0.0.1, ergo trifft die Regel zu und ich hatte Google vor mir. Merkwürdig, dass es bei dir nicht geht.

jack99
Posts: 25
Joined: 2007-06-15 13:54

Re: Apache2 / mod_rewrite im Server-Kontext

Post by jack99 » 2007-07-14 12:58

ja, das funktioniert bei mir auch, aber nur solange ich keine vHosts benutze, also die folgende Konfiguration leitet alle anfragen an http://www.google.de um:

auszug aus der apache2.conf:

Code: Select all

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
	<Files ~ "^.ht">
		deny from all
	</Files>
	Options FollowSymLinks
	AllowOverride none
</Directory>

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten  http://www.google.de [L]
das obere beispiel funktioniert also auch bei mir. Das folgende Beispiel jedoch leider nicht mehr:

Code: Select all

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
	<Files ~ "^.ht">
		deny from all
	</Files>
	Options FollowSymLinks
	AllowOverride none
</Directory>

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten  http://www.google.de [L]

<VirtualHost xxx.xxx.xxx.xxx:80>
 ServerName testdomain.de
 ServerAlias  *.testdomain.de
 DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
 SuexecUserGroup www-user www-data
 <Directory "/var/www/vhosts/www-user/html/testdomain.de">
  Options +FollowSymLinks
 </Directory>
</VirtualHost>
Wenn ich testdomain.de aufrufe wird auch testdomain.de angezeigt und nicht wie gewünscht nach http://www.google.de umgeleitet.

viele grüße
jack

dtdesign
Posts: 391
Joined: 2006-09-05 21:12
Location: Berlin

Re: Apache2 / mod_rewrite im Server-Kontext

Post by dtdesign » 2007-07-14 13:54

Wie wäre es, wenn du die Rewrite-Anweisung mal in den VirtualHost-Container packst ;)

Gruß
dtdesign

jack99
Posts: 25
Joined: 2007-06-15 13:54

Re: Apache2 / mod_rewrite im Server-Kontext

Post by jack99 » 2007-07-14 13:59

siehe erstes Posting:
...möchte ich das alle URL-Anfragen von mod_rewrite entsprechend umgeleitet werden noch bevor Sie sozusagen die vhost erreichen
viele Grüße
jack

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

Re: Apache2 / mod_rewrite im Server-Kontext

Post by Joe User » 2007-07-14 14:02

Die httpd.conf wird "von oben nach unten" abgearbeitet, das heisst die jeweils letzte Option gewinnt. Setze die Rewrites ans Ende der httpd.conf und es funktioniert...

jack99
Posts: 25
Joined: 2007-06-15 13:54

Re: Apache2 / mod_rewrite im Server-Kontext

Post by jack99 » 2007-07-14 14:16

Hallo,
Die httpd.conf wird "von oben nach unten" abgearbeitet, das heisst die jeweils letzte Option gewinnt. Setze die Rewrites ans Ende der httpd.conf und es funktioniert...
ok dann mache ich es jetzt wie folgt:
NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
<Files ~ "^.ht">
deny from all
</Files>
Options FollowSymLinks
AllowOverride none
</Directory>

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
</VirtualHost>

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten http://www.google.de [L]
- Leider kein unterschied geht immer noch nicht - kein Umleitung.

viele Grüße
jack