Seite 1 von 1

.htaccess RewriteRule funktioniert ohne .htm nicht

Verfasst: 24.05.2010 22:59
von raphaelPixelitos
Hallo,

ich möchte auf einer Homepage mit Hilfe der .htaccess-Datei die URLs für den User so abändern, dass er nichtmehr

http://www.domain.tld/index.php?p=seite

sondern

http://www.domain.tld/seite

eingeben kann.

Mit:

Code: Alles auswählen

RewriteEngine on
RewriteRule ^(.*)/$ /index.php?p=$1


habe ich das auch schon so hinbekommen, obwohl ich hierbei noch das Problem habe, dass ich mit

Code: Alles auswählen

RewriteRule ^(.*)/?$ /index.php?p=$1


versucht habe, den slash optional zu machen und es mir dann einen Fehler bringt. Vielleicht weiß ja jemand von euch, warum?

Zu meinem wichtigeren Problem:

Ich include per PHP include eine Seite in der


index.php- Datei.


Jetzt bekomme ich allerdings in der Get variable $_GET['p'], in der eigentlich

die Variable von der URL, nämlich http://www.domain.tld/seite

stehen sollte den Inhalt:

Code: Alles auswählen

redirect:/index.php


Wenn ich in der .htacces-Datei jedoch das \.htm hintendran hänge
also:

Code: Alles auswählen

RewriteRule ^(.*)\.htm/$ /index.php?p=$1


funktioniert es. Ich will es aber ohne \.htm, weil ich will, dass der User

http://www.domain.tld/seite/

und nicht

http://www.domain.tld/seite.htm/

eingeben kann.
Kann mir jemand helfen? Ich habe schon einige Möglichkeiten ausprobiert, aber bestimmt steckt der Fehler im Detail.


Grüße Raphael

Re: .htaccess RewriteRule funktioniert ohne .htm nicht

Verfasst: 22.07.2010 10:59
von Gumbo
Das Problem an der genannten Regel ist, dass auch das Ziel der Regel („index.php“) auf das Suchmuster der Regel zutrifft und es damit zu einer Endrekursion kommen kann. Aus diesem Grund sollte das Ziel von der Regel ausgenommen werden:

Code: Alles auswählen

RewriteCond $1 !=index.php
RewriteRule ^(.*)/?$ /index.php?p=$1