Page 1 of 1

Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 11:33
by jack99
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

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 12:37
by dtdesign
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.

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 12:58
by jack99
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

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 13:54
by dtdesign
Wie wäre es, wenn du die Rewrite-Anweisung mal in den VirtualHost-Container packst ;)

Gruß
dtdesign

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 13:59
by jack99
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

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 14:02
by Joe User
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...

Re: Apache2 / mod_rewrite im Server-Kontext

Posted: 2007-07-14 14:16
by jack99
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