Seite 1 von 1

Probleme mit mod_rewrite

Verfasst: 26.08.2010, 17:10
von Sensei
Hallo zusammen,

ich will bei einer meiner statischen Seiten die URLs etwas verschönern und statt den Dateien und deren Endungen nur den Namen der Datei haben.

Also mal als Beispiel:

Ausgangs URL: meinedomain.de/datei.php
Mein Ziel: meinedomain.de/datei/

Ich habe mich auch schon mal etwas umgesehen und einen Code gefunden, der eigentlich funktionieren sollte:

Code: Alles auswählen

RewriteCond %{REQUEST_FILENAME}.php -f  
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]  
RewriteCond %{REQUEST_FILENAME}.html -f  
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]
da das nicht funktioniert hat habe ich mich noch einmal umgesehen.

Code: Alles auswählen

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteBase /
RewriteRule ^&#40;&#91;_0-9a-z-&#93;+&#41;?/?$ $1.php &#91;QSA&#93;
</IfModule>
getestet, was bei .html super funktioniert geht bei .php überhaupt nicht.

Parallel hab ich versucht bei einem Fehler auf eine Fehlerseite umzuleiten, was aber auch nicht ganz geklappt hat.
Als Code habe ich da für das hier genommen:

Code: Alles auswählen

RewriteCond %&#123;REQUEST_FILENAME&#125; !-f  
RewriteCond %&#123;REQUEST_FILENAME&#125; !-d  
RewriteRule .? /404.php &#91;L&#93; 
ich hab übrigens immer erst mit

Code: Alles auswählen

RewriteEngine On
RewriteBase /
angefangen so das es funktionieren sollte.

Ich wäre froh, wenn ihr mir da helfen könntet, habe es bereits über Twitter versucht, aber da wusste auch keiner Rat.

Verfasst:
von

Verfasst: 26.08.2010, 18:11
von chris21
Also Fehlerseiten solltest Du über eine ErrorDocument Regel klären (bzw. Regelsatz).

Zum anderen: Kann es zufällig sein, dass die Seite bei 0&0 gehostet ist?

Da gibt es einige Probleme mit php Dateien unterm Domain-Root und deren Umleitungen. Falls es nicht daran liegt, solltest Du uns mal genauer erklären, was Du mit

" geht bei .php überhaupt nicht. "

meinst. Keine interne Umleitung? Fehlermeldung? Fehlermeldung im Apache Error log? Sind in den PHP Dateinamen Großbuchstaben drin?

Verfasst: 26.08.2010, 22:01
von Sensei
Bei .php geht überhaupt nichts heißt, entweder passiert gar nichts (beim ersten code) und beim zweiten wird dann zwar das php abgeschnitten, aber nicht umgeleitet.

Und um deine Frage zu beantworten nein, die Seite ist nicht bei 0&0 gehostet sondern liegt auf meinem VServer

Verfasst:
von
Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Verfasst: 26.08.2010, 22:22
von chris21
Wie siehts mit den Options im vhost aus? FollowSymLinks?
und beim zweiten wird dann zwar das php abgeschnitten, aber nicht umgeleitet.
Wodurch wird das php abgeschnitten?

Durch den Code

Code: Alles auswählen

RewriteRule ^&#40;&#91;_0-9a-z-&#93;+&#41;?/?$ $1.php &#91;QSA&#93; 

wird jedenfalls das php nicht abgeschnitten sondern intern hinzugefügt.

Wodurch wird es denn abgeschnitten?

Poste mal deine zusammenhängende htaccess, dann können wir dem auf den Grund gehen.

Verfasst: 27.08.2010, 12:13
von Sensei
Hi,

wie checke ich das mit dem FollowSysLinks?

Ansonsten sieht die .htaccess datei im Moment wie folgt aus:

Code: Alles auswählen

<IfModule mod_rewrite.c> 
RewriteEngine on
RewriteBase /
RewriteRule ^&#40;&#91;_0-9a-z-&#93;+&#41;?/?$ $1.php &#91;QSA&#93;
</IfModule>
Dabei wird mir dann folgender Fehler angezeigt:

The requested URL /.php was not found on this server.

Bei dem anderen passiert überhaupt nichts wie bereits erwähnt.

Verfasst: 27.08.2010, 12:57
von chris21
Ah, ok

Passiert das beim Aufruf von www.example.com/ ?

Das Fragezeichen hinter der Klammer bedeutet ja, dass der Klammerinhalt vorhanden sein darf oder nicht.

Was passiert denn, wenn Du folgendes schreibst:

Code: Alles auswählen

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^&#40;&#91;_0-9a-z-&#93;+&#41;/?$ $1.php &#91;QSA&#93;
</IfModule> 
Die bisherige Rule war erfüllt, wenn z.B. "" aufgerufen wird, ebenso bei "/" oder bei "blabla77" oder "blabla-bla2" oder "blabla/"

Durch entfernen des Fragezeichens habe ich die ersten beiden Fälle "" und "/" rausgenommen, die genau zu dem Fehler mit dem "/.php not found" geführt haben.

Bzgl. passiert überhaupt nichts, ändere den Code mal in

Code: Alles auswählen

<IfModule mod_rewrite.c>
RewriteEngine on
Options +FollowSymLinks
RewriteBase /
RewriteRule ^&#40;&#91;_0-9a-z-&#93;+&#41;/?$ $1.php &#91;QSA&#93;
</IfModule>

Verfasst: 27.08.2010, 14:11
von Sensei
Also wenn ich deinen ersten Code nutze,
wird die Seite domain.com/ angezeigt, aber wenn ich auf Unterseiten gehe sehen alle noch so aus wie vorher also domain.com/datei.php

Wenn ich den zweiten Code hochladen, bekomme ich von meinem Server die folgende Fehlermeldung:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Kann das bedeuten, dass er +FollowSymLinks nicht versteht und wenn ja wie kann ich das an meinem Server aktivieren.

Verfasst: 27.08.2010, 14:19
von chris21
Der Fehler bedeutet,

dass die Du die AllowOverride Direktive in Deinem vhost falsch gesetzt hast, daher der 500er Internal Server Error.

Ist es etwa ein managed vServer?

Ansonsten solltest Du Dich da nochmal an die Konfiguration des vhosts machen. Und eigentlich auch wissen, was Du dort machst als root :roll:

PS: Wie sind die Dateien denn verlinkt? Warum domain.com/datei.php ? Sind die etwa noch mit php verlinkt? Dann bringt es natürlich gar nichts...

PS: Ist das Modul mod_speling bei Dir aktiv?

Verfasst: 27.08.2010, 14:30
von Sensei
Der Tipp mit dem verlinken hat glaube ich geholfen :D

Das Modul mod_speling finde ich zwar nicht unter den aktivierten, aber die Seiten werden mir mit deinem ersten Code trotzdem richtig angezeigt, wenn ich die Verlinkung anpasse.

Damit wäre das Problem für mich erst einmal gelöst :) danke dir für deine hilfe :) und sorry das ich nicht von dem Zeug wenig Ahnung habe. Habe mich damit noch nie beschäftig

Verfasst: 27.08.2010, 14:37
von chris21
Das Modul mod_speling finde ich zwar nicht unter den aktivierten, aber die Seiten werden mir mit deinem ersten Code trotzdem richtig angezeigt, wenn ich die Verlinkung anpasse.
mod_speling sollte auch nicht aktiv sein. Nichts nervt mehr, als wenn man mod_rewrite verwendet und im Hintergrund der Apache über mod_speling noch ne Content Negotiation startet.

Aber schön, dass das Problem gelöst ist :) - ich hoffe nur, dass nicht Du sondern P. bei Euch für den technischen Betrieb der Server zuständig ist... ;)