Zur Navigation

htaccess - GET-Variable rewriten [2]

11 Jörg Kruse

RewriteCond %{REQUEST_FILENAME} !-d

Diese Bedingung sorgt dafür, dass die folgende Regel nicht auf existierende Verzeichnisse angewandt wird.

Ein Direktaufruf im Browser von https://example.com/index.php?post=foo funktioniert?

Beim zweiten Regelsatz könntest du zur Sicherheit auch noch den Slash als enthaltenes Zeichen ausklammern:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\./]+)$ $1.php [NC,L]

02.03.2022 16:51 | geändert: 02.03.2022 16:51

12 dlsn

Ein Direktaufruf im Browser von https://example.com/index.php?post=foo funktioniert?
Ja. Funktioniert ohne Probleme (sowohl mit als auch ohne dem "index.php" im Link)


Beim zweiten Regelsatz könntest du zur Sicherheit auch noch den Slash als enthaltenes Zeichen ausklammern:
Ich habe den Slash auch noch eingefügt, funktioniert aber leider trotzdem nicht.

02.03.2022 16:57

13 Jörg Kruse

Dann ist irgendwo noch ein Wurm drin. Ich habe den Code lokal bei mir getestet, funktioniert einwandfrei.

Ist der .htaccess Code wirklich vollständig?

Gibt es eine .htaccess Datei in einem übergeordneten Verzeichnis?

02.03.2022 17:41

14 dlsn

Ich habe den Code eigentlich vollständig:
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ index.php?post=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\./]+)$ $1.php [NC,L]

RewriteRule ^index$ / [R=301]

Und es existiert bisher nur die eine .htaccess

02.03.2022 17:56

15 dlsn

Hurra! Ich habe eine Lösung für mein Problem gefunden:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/([^/]*)$ index.php?post=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\./]+)$ $1.php [NC,L]

RewriteRule ^index$ / [R=301]

^ich habe das ganze mal so geändert, dass die neue URL noch ein (nicht existierendes) Verzeichnis blog "simuliert"

Vielen lieben Dank Dir für Deine Mühe!

02.03.2022 19:12

Beitrag schreiben (als Gast)

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





[BBCode-Hilfe]