Zur Navigation

Parameter per htaccess in schönen URL umleiten

1 Tom12

Ich habe die Datei (php Datei)

/backend/profile
dazu habe ich ein Usersystem also z.B.

profile?user=test
Dabei wir dann die Profilseite des Users "test" aufgerufen
ich finde das sieht in der URL leiste unschön aus

Wie kann ich also es so machen, dass beim User test z.B.
/backend/profile/test
steht

(Achtung! profile ist eine Datei, kein Verzeichnis)

27.03.2018 18:26

2 Jörg Kruse

Die Datei heißt auch im Dateisystem nur profile ohne Dateiendung - oder findet da bereits ein Rewrite statt?

Grundsätzlich sollte dies so gehen:

RewriteEngine on

RewriteRule ^/?backend/profile/(.+)$ backend/profile?user=$1

... vorausgesetzt andere Direktiven funken hier nicht dazwischen

Ein Problem könnten noch relative Pfade im betreffenden HTML-Dokument sein, die dann wegen der zusätzlichen Verzeichnisebene in der URL nicht mehr stimmen. Diese müssten dann genauso angepasst werden wie die Verlinkung der Profil-URLs. Die .htaccess Datei kümmert sich hier nur um die Rückübersetzung.

27.03.2018 18:47

1 Forenmitglied fand diesen Beitrag gut

3 Tom12

im dateisystem heißt die profile.php

ich hab allerdings alle dateien so eingestellt, dass man sie auch ohne diese endung aufrufen kann.

RewriteEngine On
	RewriteBase /
	RewriteCond %{REQUEST_FILENAME}.php -f
	RewriteRule (.*) $1.php

27.03.2018 18:51

4 Jörg Kruse

Dann würde ich direkt auf die profile.php rewriten:

RewriteEngine On
	RewriteBase /

        RewriteRule ^/?backend/profile/(.+)$ backend/profile.php?user=$1 [L]

	RewriteCond %{REQUEST_FILENAME}.php -f
	RewriteRule (.*) $1.php

27.03.2018 18:54

1 Forenmitglied fand diesen Beitrag gut

5 Tom12

wenn ich nun die Seite:

backend/profile/test
aufrufe, bekomme ich nur den error
File not found.
. Ich denke der Server geht irgendwie davon aus, dass profile ein Verzeichnis ist :\

denn wenn ich
backend/profile.php/test
schreibe, zeigt er mir genau das geliche an als wenn ich die Seite "profile"
so aufrufen würde :\ und das möchte ich ja auch nicht.

27.03.2018 18:57

6 Tom12

Soweit klappt es...
Das problem ist nur,
Die Include Seiten sind nicht mehr richtig eingefügt und außerdem wird auch nicht der Benutzer angezeigt, sondern nur die meldung, dass keine Benutzer registriert sind :/

27.03.2018 19:07 | geändert von Jörg: 11.07.2018 18:17

7 Jörg Kruse

Das, was ich oben bereits angedeutet habe:

Ein Problem könnten noch relative Pfade im betreffenden HTML-Dokument sein, die dann wegen der zusätzlichen Verzeichnisebene in der URL nicht mehr stimmen. Diese müssten dann genauso angepasst werden

Beispiel dieser relative Pfad:

<img href="https://example.com" src="../include/images/logo.svg" height="70px">

... unter https://example.com/backend/profile?user=test ergibt dieser die URL https://example.com/include/images/logo.svg

... unter https://example.com/backend/profile/test ergibt dieser die URL https://example.com/backend/include/images/logo.svg

Wenn du die Pfade im HTML nicht anpassen möchtest, wäre vielleicht eine schöne URL mit einem - statt mit einem / unproblematischer?

Also https://example.com/backend/profile-test und:

RewriteRule ^/?backend/profile-(.+)$ backend/profile.php?user=$1 [L]

27.03.2018 19:27 | geändert: 11.07.2018 18:18

1 Forenmitglied fand diesen Beitrag gut

8 Tom12

Vielen Dank
Es klappt alles super

Hier nochmal den Code als Zusammenfassung für andere:

RewriteEngine On
	RewriteBase /
        RewriteRule ^/?backend/profile-(.+)$ backend/profile.php?user=$1 [L]
	RewriteCond %{REQUEST_FILENAME}.php -f
	RewriteRule (.*) $1.php

27.03.2018 19:32

Beitrag schreiben (als Gast)

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





[BBCode-Hilfe]