Ubuntu -> Apache mod_rewrite

Hallo an alle!

Ich habe ein Ubuntu-System (Hardy Heron) und habe dort PHP und Apache2 installiert in den Versionen 5.2.4. und 2.2.8.
Nun möchte ich das Rewriting aktivieren, was mir auch gelungen ist, zu sehen an der phpinfo-Seitenausgabe. Dort wird das Modul aufgelistet.

Nun habe ich alles so gemacht, wie auch bei meinem Intrepid-System, nur bei Intrepid funktioniert es bei Hardy Heron nicht.

Die .htaccess ist die gleiche, die Vorgehensweise ist die gleiche. An was kann das liegen?

Im Apache-Log erscheint:
File does not exist: /var/www/PHANTOM/10
die RewriteRule schreibt vor:
RewriteRule ^([0-9-]+)/([0-9-]+)/.+.html$ „/?TESTID=$1&NOCHEINTEST=$2“

Jemand eine Idee?

Gruß PHANTOM

Im Apache-Log erscheint:
File does not exist: /var/www/PHANTOM/10
die RewriteRule schreibt vor:
RewriteRule ^([0-9-]+)/([0-9-]+)/.+.html$ „/?TESTID=$1&NOCHEINTEST=$2“
Jemand eine Idee?

Du leitest ja nach „/?TESTID=01234&NOCHEINTEST=56789“ um. Dazu muss natürlich ein entsprechendes Default-Dokument existieren in deinem www-root. Was passiert denn wenn du in deinem Browser einfach mal
http://dein-server/?TESTID=01234&NOCHEINTEST=56789 aufrufst? Dann sollte doch der gleiche Fehler wie oben kommen.

Ja, das existiert auch, nämlich index.php.
Es sollte index.php?.. aufrufen.

Gebe ich das so in den Webbrowser ein, klappt es auch.

Gruß PHANTOM

Ja, das existiert auch, nämlich index.php.
Es sollte index.php?.. aufrufen.

Gebe ich das so in den Webbrowser ein, klappt es auch.

Dann leite doch mal direkt an die index.php weiter und nimm mal die Anführungszeichen weg. Also:

^([0-9-]+)\/([0-9-]+)\/.+\.html$ /index.php?TESTID=$1\&NOCHEINTEST=$2

Klappts dann?

Nein, haut nicht hin.
Ich habe auch schon andere RewriteRules genommen, ohne Erfolg.
Und wie gesagt mit 8.10 läufts hingegen.

Gruß PHANTOM

Hallo PHANTOM,
damit man besser verfolgen kann, was dein mod_rewrite so treibt, leite doch mal die Aktionen mit RewriteLog in eine Datei um und stelle den RewriteLogLevel am besten gleich auf 9. Da kannst Du dann die Datei hier analysieren, hilft vielleicht.

Viele Grüße
Marvin

Nein, haut nicht hin.
Ich habe auch schon andere RewriteRules genommen, ohne Erfolg.
Und wie gesagt mit 8.10 läufts hingegen.

Die Rewrite-Engine hast du aber schon aktiviert vorher in der .htaccess Datei?? Und das mod_rewrite Modul ist auch aktiviert?

RewriteEngine on

Und in dem Verzeichnis ist die Verwendung von .htaccess Dateien auch aktiviert, d.h. die .htaccess Datei wird auch interpretiert?

Das Escape-Zeichen beim & scheint mir beim Rewrite-Ziel auch nicht nötig zu sein, also

RewriteRule ^([0-9-]+)\/([0-9-]+)\/.+\.html$ /index.php?TESTID=$1&NOCHEINTEST=$2

Wenn das alles nicht hilft, würde ich mal einfacher anfangen:

RewriteEngine On
RewriteRule ^ http://www.google.de [R,L]

Wenn sowas schon nicht funktioniert, dann wird dein mod_rewrite nicht vernünftig geladen oder die .htaccess Datei nicht interpretiert.

Und in dem Verzeichnis ist die Verwendung von .htaccess
Dateien auch aktiviert, d.h. die .htaccess Datei wird auch
interpretiert?

Wie tue ich das?

Wenn das alles nicht hilft, würde ich mal einfacher anfangen:

RewriteEngine On
RewriteRule ^ http://www.google.de [R,L]

-> Funktioniert nicht. Bleibt auf meiner Domain und leitet nicht um.

Gruß PHANTOM

Teste doch mal ob die .htaccess Datei überhaupt verwendet wird. Erstelle dazu einfach eine .htaccess Datei mit folgendem Inhalt und schau ob du auf das entsprechende Verzeichnis in der die .htaccess Datei liegt noch zugreifen kannst.

AuthName "Test"
AuthType Basic
AuthUserFile /pfad/zu/leerer/datei
require valid-user 

Ich erhalte kein Fenster, dass ich mich „registrieren“ muss.
-> Die .htaccess wird wohl überhaupt nicht berücksichtigt.

Gruß PHANTOM

Ich erhalte kein Fenster, dass ich mich „registrieren“ muss.
-> Die .htaccess wird wohl überhaupt nicht berücksichtigt.

Was hast du denn dann überhaupt als AllowOverride in dem entsprechenden Verzeichnis in der Apache-Config angegeben? Wenn du AllowOverride auf „None“ stehen hast, dann ist es schon klar, dass die htaccess-Datei ignoriert wird.

So siehts aus bei mir:

 ServerName www.phantom.de
 ServerAlias phantom.online.de
 ServerAdmin webmaster@localhost

 DocumentRoot /var/www/phantom

 Options FollowSymLinks
 AllowOverride All


 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all


 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all


 ErrorLog /var/log/apache2/error.log

 # Possible values include: debug, info, notice, warn, error, crit,
 # alert, emerg.
 LogLevel warn

 CustomLog /var/log/apache2/access.log combined
 ServerSignature On

 Alias /doc/ "/usr/share/doc/"

 Options Indexes MultiViews FollowSymLinks
 AllowOverride None
 Order deny,allow
 Deny from all
 Allow from 127.0.0.0/255.0.0.0 ::1/128

Dann leg doch mal die Datei /var/www/phantom/.htaccess an mit folgendem Inhalt:

Redirect /test http://www.google.de

Dann führst du folgenden Befehl aus um sicher zu stellen dass die .htaccess Datei gelesen werden kann:

sudo chmod +r /var/www/phantom/.htaccess

Anschließend startest du zur Sicherheit noch deinen Apache neu und rufst im Webbrowser mal http://dein-webserver/test auf. Erscheint dann die Google-Seite oder was kommt da?