Zur Navigation

Sprechende URL direkt aus Datenbank abrufen [2]

11 Jörg Kruse

Probier mal mit dieser zusätzlichen Bedingung und dem [L] Flag am Ende:

RewriteEngine On 
RewriteBase /verzeichnis/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)$ seite.php?seite=$1 [L]

... weil andernfalls der Webserver seite.php ein zweites mal rewritet. Einen Fehler 404 sollte er deswegen dennoch nicht produzieren, aber vielleicht hat seite.php diesen ja ausgegeben.

30.04.2022 11:26

12 Winelady

Ha, jetzt kommen wir der Sache näher!
Allerdings wechselt die URL jetzt aus /verzeichnis/seite.php zu:
https://meine-url/seite.php.

Der Verzeichnispfad wird also entfernt, aber die Parameter sind auf jeden Fall weg.

30.04.2022 13:26

13 Winelady

Gerade habe ich noch eine andere Variation ausprobiert, die im Rootverzeichnis funktioniert, nicht aber in ../verzeichnis/.
Vielleicht könnte man die anpassen:

alte URL: http://example.com/users.php?name=tania
neue URL: http://example.com/users/tania

.htaccess:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users\.php$ /users/%1? [L,R=301]

Quelle: morioh.com

Was müsste ich ändern, um dies in einem Unterverzeichnis zu verwenden? Funktioniert in der root einwandfrei.

30.04.2022 14:06

14 Jörg Kruse

OK, ich bemerke gerade, dass es dir hier nicht mehr um den internen Rewrite geht, welcher die sprechende URL erst ermöglicht, sondern um die Weiterleitung auf die sprechende URL. Ich würde doch aber erst einmal sicherstellen, dass die sprechende URL an sich funktioniert, d.h. den gewünschten Inhalt anzeigt.

Also sobald https://example.com/verzeichnis/xyz den Inhalt von https://example.com/verzeichnis/seite.php?seite=xyz anzeigt, würde ich mich in einem zweiten (optionalen) Schritt darum kümmern, dass https://example.com/verzeichnis/seite.php?seite=xyz auf https://example.com/verzeichnis/xyz weitergeleitet wird. Ist diese Voraussetzung denn gegeben, oder wird immer noch ein Fehler 404 angezeigt, so wie du weiter oben geschrieben hattest:

Wenn ich im Browser ../verzeichnis/xyz eingebe, bekomme ich die Fehlerseite-404.

Ein Test mit dem Code aus meinem letzten Post funktioniert auf einem lokalen Test-System übrigens einwandfrei. Es kann aber natürlich sein, dass die .htaccess Datei des darüberliegenden Verzeichnisses oder die seite.php mit einem PHP-Redirect querschießt.

Zu der Weiterleitung:

.htaccess:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users\.php$ /users/%1? [L,R=301]

Quelle: morioh.com

Was müsste ich ändern, um dies in einem Unterverzeichnis zu verwenden? Funktioniert in der root einwandfrei.

Den Verzeichnispfad auch im Muster einbauen:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users/users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users/users\.php$ /users/%1? [L,R=301]

... oder wenn du eine RewriteBase-Angabe drin hast, auf beiden Seiten der RewriteRule weglassen:

RewriteBase /users/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users/users\.php\?name=([^\&\ ]+)
RewriteRule ^/?users\.php$ /%1? [L,R=301]

30.04.2022 15:02 | geändert: 30.04.2022 15:15

15 Winelady

Super, ganz vielen lieben Dank – die Weiterleitung klappt jetzt.
Ich denke, ich sollte nun erst mal die Seite zusammenbasteln, und wenn's dann immer noch hakt, melde ich mich wieder.

Du hast mir wirklich sehr weitergeholfen! Darf ich mich mit einem kleinen Gruß aus unserem Keller revanchieren? Ich heiße ja nicht umsonst "Winelady"…

LG

30.04.2022 15:50

16 Jörg Kruse

Schön, dass es jetzt funktioniert! Gegen den Gruß aus eurem Keller habe ich nichts einzuwenden :)

30.04.2022 16:42

17 Winelady

Scheint alles zu klappen; morgen geht es an die Details.
Apropos: lieber weiß, rosé oder rot, lieber trocken, feinherb oder süß?

Danke für Deine prompte + kompetente Hilfe!!!
LG Winelady

01.05.2022 19:37

18 Jörg Kruse

rot, und ansonsten lasse ich mich gerne überraschen :) (als Norddeutscher bin ich kein allzu großer Weinkenner)

02.05.2022 10:15

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]