mod_rewrite

Hallo,

ich weiss, das ist streng genommen keine php-sache, aber da ich kein besseres Forum gefunden habe:
Ich habe keinen eigenen Server und versuche das mod_rewrite anzusprechen (dieses ist geladen, da ich das per phpinfo() sehen kann) um einige Seiten mit leichteren links zu versehen. Sobald ich aber ein

RewriteEngine on

in meine .htaccess schreibe, kommt bei Seitenaufruf ein Fehler 500. Kann mir jemand weiterhelfen? Achja ausserdem kann ich kein ErrorDocument anwenden.

Danke schon mal und

Gruss, Omar Abo-Namous

Hallo,

ich weiss, das ist streng genommen keine php-sache, aber da
ich kein besseres Forum gefunden habe:
Ich habe keinen eigenen Server und versuche das mod_rewrite
anzusprechen (dieses ist geladen, da ich das per phpinfo()
sehen kann) um einige Seiten mit leichteren links zu versehen.
Sobald ich aber ein

RewriteEngine on

in meine .htaccess schreibe, kommt bei Seitenaufruf ein Fehler
500. Kann mir jemand weiterhelfen? Achja ausserdem kann ich
kein ErrorDocument anwenden.

a) wenn dir die rechte nicht zugedacht sind serverconfigs zu ueberschreiben (errordocument, rewriteengine etc.), dann kannst du die funktionen nicht nutzen. admin fragen
b) poste doch bitte den link zu der von dir genannten phpinfo - ich kann mir im moment gar nicht vorstellen, wo man dort erkennen kann dass mod_rewrtie geladen ist.
c) evtl. brauchst du die zeile „RewriteEngine on“ gar nicht, weil sie per default on ist? einfach mal mit einer simplen regel testen

Hallo, danke erst einmal.

a) wenn dir die rechte nicht zugedacht sind serverconfigs zu
ueberschreiben (errordocument, rewriteengine etc.), dann
kannst du die funktionen nicht nutzen. admin fragen

hab ne email abgeschickt. Wie sieht es denn aus in der apache konfiguration, wenn serverconfigs nicht überschrieben werden dürfen?

b) poste doch bitte den link zu der von dir genannten phpinfo

  • ich kann mir im moment gar nicht vorstellen, wo man dort
    erkennen kann dass mod_rewrtie geladen ist.

http://www.islaminhannover.de/phpinfo.php
einfach nach rewrite suchen, dann findet man das unter apache>Loaded Modules.

c) evtl. brauchst du die zeile „RewriteEngine on“ gar nicht,
weil sie per default on ist? einfach mal mit einer simplen
regel testen

Das dachte ich auch, ist aber nicht, die Regeln gehen auch nicht.

Gruss, Omar Abo-Namous

a) wenn dir die rechte nicht zugedacht sind serverconfigs zu
ueberschreiben (errordocument, rewriteengine etc.), dann
kannst du die funktionen nicht nutzen. admin fragen

hab ne email abgeschickt. Wie sieht es denn aus in der apache
konfiguration, wenn serverconfigs nicht überschrieben werden
dürfen?

dann steht hinter „allowoverride“ none
http://httpd.apache.org/docs/mod/core.html#allowover…

c) evtl. brauchst du die zeile „RewriteEngine on“ gar nicht,
weil sie per default on ist? einfach mal mit einer simplen
regel testen

Das dachte ich auch, ist aber nicht, die Regeln gehen auch
nicht.

dann kann dir nur der admin weiterhelfen

Hallo!

Ich habe keinen eigenen Server und versuche das mod_rewrite
anzusprechen (dieses ist geladen, da ich das per phpinfo()
sehen kann) um einige Seiten mit leichteren links zu versehen.

Ich habe mir Deine phpinfo() auch einmal angesehen.

Warum verzichtest Du nicht auf mod_rewrite und löst das mit
den Links in PHP?

Dein Server ist so konfiguriert, dass er php-Seiten auch ohne
die Extension .php interpretiert. Ausserdem ist Dein Apache
so konfiguriert, dass er die erweiterte Pfad-Info akzeptiert
und an das aufrufende Script weiterleitet („AcceptPathInfo On“).

Damit kannst Du dann Links erzeugen, wie z.B.
http://www.islaminhannover.de/phpinfo/Dies/sind/die/…

Damit wird das Script phpinfo aufgerufen. In diesem ist dann die
Server-Variable $_SERVER[„PATH_INFO“] mit dem Inhalt
„/Dies/sind/die/Parameter/Deiner/Seite.html“ gesetzt. Das
lässt sich dann hervorragend parsen.

Viele Grüße
Thomas

Warum verzichtest Du nicht auf mod_rewrite und löst das mit
den Links in PHP?

Dein Server ist so konfiguriert, dass er php-Seiten auch ohne
die Extension .php interpretiert. Ausserdem ist Dein Apache
so konfiguriert, dass er die erweiterte Pfad-Info akzeptiert
und an das aufrufende Script weiterleitet („AcceptPathInfo
On“).

Damit kannst Du dann Links erzeugen, wie z.B.
http://www.islaminhannover.de/phpinfo/Dies/sind/die/…

Damit wird das Script phpinfo aufgerufen. In diesem ist dann
die
Server-Variable $_SERVER[„PATH_INFO“] mit dem Inhalt
„/Dies/sind/die/Parameter/Deiner/Seite.html“ gesetzt. Das
lässt sich dann hervorragend parsen.

Hallo,

Danke! Dieser Beitrag hätte einen Stern verdient, ich kann nur leider noch nicht bewerten. Ich weiss noch nicht, ob ich diese Methode verwenden werde (muss mir den Aufwand anschauen), aber die Info ist gut.

Noch was: an welchem Teil der phpinfo() sieht man, dass ich das bei dem server kann??

Danke Nochmal!

Gruss, Omar Abo-Namous

http://www.islaminhannover.de

Noch was: an welchem Teil der phpinfo() sieht man, dass ich
das bei dem server kann??

In phpinfo() steht es leider nicht explizit drin.

Wenn PHP als Apache-Modul läuft (phpinfo: Server-API: Apache)
versucht der Apache i.d.R. auch Scripte ohne explizite Nennung
der Extension .php auszuführen. D.h. das Script htdocs/phpinfo.php
kann über http://host/phpinfo oder http://host/phpinfo.php
aufgerufen werden.

Damit der Apache die nach dem Script folgenden Parameter auch
weitergibt, muss in der httpd.conf ein Eintrag „AcceptPathInfo On“
vorhanden sein. Falls der Provider den Zugriff auf die httpd.conf
gesperrt hat, hilft also nur ausprobieren.

Vorgehen um herauszufinden, ob der Server/Provider die Funktionalität unterstützt:

  1. Erstellen einer phpinfo.php mit bekanntem Inhalt
  2. Aufrufen der phpinfo.php OHNE Extension .php
    (z.B. http://www.meinhost.xyz/phpinfo)
  3. Falls 2. klappt, Aufrufen von phpinfo mit Path-Parametern
    (z.B. http://www.meinhost.xyz/phpinfo/param1/param2)
    Falls 2. nicht klappt, Aufruf von phpinfo.php mit Path-Parametern
    (z.B. http://www.meinhost.xyz/phpinfo.php/param1/param2);
    Überprüfen, ob die Variable $_SERVER[‚PATH_INFO‘] gesetzt ist
    und /param1/param2 enthält.

Falls 2. klappt, läuft Apache als Modul und ist so konfiguriert,
dass auch Scripte ohne explizite Angabe der Extension aufgerufen werden.

Falls 3. klappt, ist der Apache so konfiguriert, dass er Parameter
nach dem Scriptnamen an das Script weiterleitet.

Vielen Dank für das virtuelle Sternchen und viel Spass beim
weiteren Experimentieren.

Gruss
Thomas