RewriteRule, Einträge werden nicht richtig aufgelöst
David 2
- htaccess
0 Raketenwilli0 Rolf B
Da ist wohl der Fehlerteufel in meiner htaccess
In meiner .htaccess habe ich folgende Einträge
RewriteRule ^namen_mit_([a-z])_([0-9]+).html index.php?page=namen&buchstabe=$1&nummer=$2 [L]
RewriteRule ^namen_mit_([a-z]+).html index.php?page=namen&buchstabe=$1 [L]
der zweite funktioniert:
Array ( [page] => namen [buchstabe] => a )
der erste nicht.
Hier bekomme ich
Array ( [page] => namen/namen_mit_b_4 )
David
Du hast:
RewriteRule ^namen_mit_([a-z])_([0-9]+).html
Vermutlich willst Du
RewriteRule ^namen_mit_([a-z]+)_([0-9]+).html
Hallo David,
Array ( [page] => namen/namen_mit_b_4 )
Das kann nicht aus den beiden gezeigten Rewrite-Rules entstehen; die erzeugen MINDESTENS noch den key 'buchstabe' im Array. Hast Du noch mehr Rules?
Rolf
Die Daten liegen auf meinem raspberrypi, bei mir zuhause
http://raspberrypi/test
Im test Verzeichnis liegt meine htaccess, in diesem Verzeichnis liegt auch die index.php
RewriteEngine on
RewriteBase /test/
RewriteRule ^namen_mit_([a-z])_([0-9]+).html index.php?page=namen&buchstabe=$1&nummer=$2 [L]
RewriteRule ^namen_mit_([a-z]+).html index.php?page=namen&buchstabe=$1 [L]
RewriteRule ^(.*).html index.php?page=$1 [L]
die Index habe ich reingemacht damit ich den Fehler sehe (was aber nichts nützt, weil ich es nicht verstehe 😭😱)
David
welche URLs lässt Du auf diese Rules los (den Domain-Namen kannst Du durch example.com ersetzen, wenn deine Seite privat ist)
Und welches Ergebnis erwartest Du für diese. Bitte schön listen:
…
Ich hoffe mal das ich deine Frage richtig verstehe.
http://raspberrypi/test/adressen/namen_mit_a_1.html
dann möchte ich
http://raspberrypi/test/index.php?page=namen&buchstabe=a&nummer=1
das haben
Ich habe nicht an das Unterverzeichnis gedacht!
RewriteRule ^test/namen_mit_([a-z])_([0-9]+).html
jetzt geht es.
Oje
Hallo David,
funktioniert
das kann nach dem, was Du an Beispielen gegeben hast, nicht sein.
Hast Du eine weitere .htaccess im Webroot stehen, die den Rewrite behandelt? Weil Du eine RewriteBase setzt, liegt diese Vermutung nahe.
Rolf
Hallo David,
Ich hoffe mal das ich deine Frage richtig verstehe.
Hast Du.
Deine Rewrite-Rules geben die URL-Struktur, die Du da hereingibst, aber nicht wieder. Wenn die .htaccess im test-Order liegt, kommt
http://raspberrypi/test/adressen/namen_mit_a_1.html
in der RewriteRule als
adressen/namen_mit_a_1.html
an, d.h. das ist der String, auf den das Pattern in der RewriteRule passen muss.
RewriteBase /test/
Ich glaube, die RewriteBase stört hier nur, weil Du die .htaccess ja schon im test-Ordner drinstehen hast.
Deine Rules müssten so aussehen:
RewriteRule ^adressen/namen_mit_([a-z]+)_([0-9]+).html index.php?page=namen&buchstabe=$1&nummer=$2
RewriteRule ^adressen/namen_mit_([a-z]+).html index.php?page=namen&buchstabe=$1
Ob dieser Pfadteil "adressen/" nötig ist, kann man diskutieren. Technisch erforderlich ist das nicht, das ist deine persönliche Geschmacksentscheidung.
Es hat vor allem Auswirkungen, wenn Du auf der so generierten Seite Ressourcen einbindest (CSS, JS, Bilder), denn der Browser meint ja, die Seite würde aus dem adressen-Ordner abgerufen. Ein HTML wie
<img src="bild.jpg">
würde dann aus dem adressen-Ordner abgerufen. Das muss man bei solchen Transformationen im Auge behalten.
Da Du eh keine echten HTML Seiten abrufst, könntest Du das .html Suffix in den URLs auch weglassen. Es sei denn, du möchtest gern den Eindruck vortäuschen, eine unbeholfene statische Seitensammlung erstellt zu haben.
Rolf