Seite 1 von 1

Mod Rewrite läuft lokal aber online nicht

Verfasst: 11.04.2010 21:43
von Waldgeist
Hallo ihr,

ich stehe gerade vor einem mir unerklärlichem Problem. Ich habe ein kleines Projekt bei dem die URL's umgeschrieben werden.
Lokal läuft das ganze problemlos. Sobald ich es aber ins Netz stelle geht das umschreiben nicht mehr und der springt in den ErrorDocument Teil (den ich testweise erst mal ausgeklammert habe).

Der Code der .htaccess Datei ist der folgende:

Code: Alles auswählen

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^rezensio\.de$ [NC]
RewriteRule ^(.*)$ http://www.rezensio.de/$1 [R=301,L]

RewriteRule ^([^/]*).htm$ index.php?temp=$1 [QSA,L]
RewriteRule ^([^/]+)$ $1 [QSA,L]
RewriteRule ^([^/]+)/([^/]*).htm$ $1?id=$2 [QSA,L]
RewriteRule ^([^/]+)/([^/]*)$ $1?action=$2 [QSA,L]

#ErrorDocument 404 http://www.rezensio.de/
Anschauen kann man sich das ganze zum Beispiel auf der Seite:
http://www.rezensio.de/film

Dort kommt dann die Meldung: Objekt nicht gefunden


Und am Server sollte es nicht liegen. Auf dem selben Server laufen auch andere Seiten die per Mod Rewrite umgeschrieben werden.

Ich habe gerade nicht mal mehr eine Idee wo ich ansetzen soll um das Problem zu lösen.
Wenn also irgend wer irgend einen Ansatz oder eine Idee hat freue ich mich sehr darüber.
Vielen Dank für eure Hilfe...

Verfasst: 14.04.2010 11:11
von Waldgeist
So, ich habe das Problem ein wenig eingegrenzt... Das umschreiben grundlegend funktioniert, es gibt nur Probleme wenn eine URL umgeschrieben werden soll die das folgende Format hat:

Code: Alles auswählen

www.rezensio.de/film
Das soll ja dann umgeschrieben werden auf rezensi.de/film.php
Und da gibt er dann einen Fehler aus:
Internal Server Error
Nur was an dem Umschreiben nicht funktionieren soll ist mir unklar ... :(
Hat jemand einen Tipp oder Ratschlag ?
Und warum geht es lokal problemlos, online aber nicht?

Verfasst: 14.04.2010 17:04
von Waldgeist
Ach ja, in meinem Code-Auszug oben hat sich natürlich ein kleiner Fehler eingeschlichen.

Code: Alles auswählen

RewriteRule ^([^/]+)$ $1 [QSA,L] 
muss natürlich heißen

Code: Alles auswählen

RewriteRule ^([^/]+)$ $1.php [QSA,L] 
Aber das ändert dennoch nichts. Der Fehler bleibt bestehen und der Server meldet mit einen Fehler (Internal Server Error).
Könnte es sein, dass ich nicht auf $1.php verweisen darf sonder eine feste Datei angegeben werden muss?
Weil die selbe Anweisung in der Variante:

Code: Alles auswählen

RewriteRule ^([^/]+)$ index.php?id=$1 [QSA,L] 
gibt mir in der index.php bei echo "$_GET[id]"; die gewünschte Rückgabe zurück ...

Verzweifeln kann man an den Rewrite Funktionen :twisted: :roll:

Verfasst: 18.04.2010 18:04
von Waldgeist
So, ich habe jetzt grundlegend noch mal neu mit dem Aufbau der Regeln angefangen.
Und bin zu folgender funktionierender Variante gekommen:

Code: Alles auswählen

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTP_HOST} ^rezensio\.de$ [NC]
RewriteRule ^(.*)$ http://www.rezensio.de/$1 [R=301,L]

RewriteRule ^([^/]+)/([^/]+)\.htm$ $1.php?id=$2 [QSA,L]
RewriteRule ^([^/]+)\.htm$ index.php?temp=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]*)$ $1.php?action=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ $1.php [QSA,L]

ErrorDocument 404 http://www.rezensio.de/
ErrorDocument 500 http://www.rezensio.de/
Was mir nun allerdings noch sehr unklar ist:

Warum muss ich die dritte Zeile noch mal setzen? Der soll doch eigentlich automatisch in die letzte RewriteCond gehen...

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]*)$ $1.php?action=$2 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ $1.php [QSA,L]
Vielleicht kann mir das ja noch jemand beantworten.
Vielen Dank und viele Grüße von Rezensio