PHP Modrewrite

thepro1

Lt. Junior Grade
Registriert
Apr. 2008
Beiträge
411
Hallo liebe Community,

ich habe mich hier und hier über Modrewrite informiert.

Mein Ziel ist es das: /index.php?seite=startseite in /startseite umzuwandeln.
Daher scheint mir diese Lösung sehr einfach.

So funktioniert es:
RewriteEngine on
Options FollowSymLinks
RewriteBase /
RewriteRule startseite.html index.php?seite=startseite


So nicht:
RewriteEngine on
Options FollowSymLinks
RewriteBase /
RewriteRule ^(.+)$ index.php?seite=

Bin über jeden Lösungsansatz dankbar :)
 
bringts was, wenn du den punkt escapest?
^(\.+)$ index.php?seite=
 
Hinter dein index.php?seite= muss ja noch hin, was du dem Parameter seite zuweisen willst: $1 (die 1 bezieht sich auf den ersten eingeklammerten Ausdruck). Und ich würde auch das + (ein Zeichen oder mehr) durch ein * (kein Zeichen oder mehr) ersetzten, sonst greift deine Regel nicht, wenn kein "Unterordner" angegeben ist.
Also: RewriteRule ^(.*)$ index.php?seite=$1

DonnyDepp schrieb:
bringts was, wenn du den punkt escapest?
^(\.+)$ index.php?seite=
Wenn er den Punkt escapen würde, dann könnte er ja nur folgende Seiten aufrufen:
seite.tld/. oder seite.tld/.. oder seite.tld/... usw. :rolleyes:
 
Schon mal vielen Dank für eure Antworten :)

Obwohl das hier total logisch erscheint geht es auch nicht :(

RewriteEngine on
Options FollowSymLinks
RewriteBase /
RewriteRule ^(.*)$ index.php?seite=$1

Nebenbei: PHP bringt diesen Fehler:

Notice: Undefined index: index.php in /var/www/uhighskiller/html/index.php on line 56 Warning: include(): Filename cannot be empty in /var/www/uhighskiller/html/index.php on line 56 Warning: include(): Failed opening '' for inclusion (include_path='.:/php/includes:/var/www/cmss') in /var/www/uhighskiller/html/index.php on line 56

Daraus schließe ich, dass er bei $1 nichts einsetzt - ist aber nur eine Vermutung...
 
Hm, hab grad noch ein bisschen rumprobiert und der bisherige Code funktioniert wirklich nicht. Frag mich jetzt bitte nicht warum, aber mit folgenden zusätzlichen Code nach RewriteBase funktioniert es:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Diese zwei Zeilen sollten eig dafür sorgen, dass echte Ordner (d) und Dateien (f) von der RewriteRule ausgenommen sind. Aber ohne diese wurde bei mir immer nur der Name des PHP-Skripts als Parameter übergeben?! :lol:

Abgesehen davon scheint in deinem Skript noch ein anderer Fehler zu sein, denn ich hab wie gesagt immer zumindest den Namen des PHP Skripts im Parameter stehen gehabt und nie einen leeren String.
Wie sieht denn dein Skript bisher aus?
 
Zurück
Oben