theuntouchable
Goto Top

Apache2: Mit PHP rewrite die eigentliche Adresse in der URL verschleiern

Hallo liebe Kollegen,

ich arbeite im Moment an einem kleinen privaten Projekt zur Verwaltung von Kunden und Seiten - Benutzern mit verschiedenen Rechten.

Hierbei möchte ich aber gerne, dass nicht der genaue physikalische Pfad in der Adressleiste angezeigt wird, sondern nur ein Schlagwort.

Aktueller physikalische Struktur:

www --> http
    --> https
             --> verwaltung
                           index.php (Hier wird nach Benutzername und Passwort gefragt und eine Session gestartet, anschließend wird man auf die menu.php weitergeleitet)
                           menu.php (Auswahl, welchen Bereich man betreten möchte)
                           --> BV (Benutzerverwaltung --> gewünschtes Schlagwort, Pfade darunter sollen nicht angezeigt werden)
                                index.php
                                erstellen.php
                                bearbeiten.php
                           --> KV (Kundenverwaltung --> gewünschtes Schlagwort, Pfade darunter sollen nicht angezeigt werden)
                                index.php
                                erstellen.php
                                bearbeiten.php

Beispiel:

Rufe ich jetzt über die Menu.php die Benutzerverwaltung auf, soll in der URL nur stehen:
...\Verwaltung\Benutzerverwaltung anstatt ..\Verwaltung\BV\index.php.
Gehe ich hier auf erstellen, soll nicht ..\Verwaltung\BV\erstellen.php angezeigt werden, sondern wieder nur ...\Verwaltung\Benutzerverwaltung

Ich hoffe, man versteht ungefähr, was ich meine face-smile

Gibt es da eine Möglichkeit, dies per rewrite und htaccess hinzubekommen? face-smile Oder sollte ich meine ganze Struktur überarbeiten?

Danke schon mal für die Hilfe!

Grüße

Michael

Content-ID: 258340

Url: https://administrator.de/contentid/258340

Ausgedruckt am: 25.11.2024 um 14:11 Uhr

colinardo
Lösung colinardo 23.12.2014, aktualisiert am 01.01.2015 um 18:56:35 Uhr
Goto Top
Hallo Michael,
du musst anders herum denken. Also wenn ich http://www.domain.de/Verwaltung/Benutzerverwaltung aufgerufen wird, wird unsichtbar auf die tatsächliche URL /Verwaltung/BV/index.php umgeleitet ohne das sich die URL in der Adressleiste ändert.

Dann lässt sich das z.B. so machen:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/Verwaltung/Benutzerverwaltung/?$ [NC]
RewriteRule ^(.*)$  /Verwaltung/BV/index.php [QSA,L]
RewriteCond %{REQUEST_URI} ^/Verwaltung/Benutzerverwaltung/([^/]+)$ [NC]
RewriteRule ([^/]+)$ /Verwaltung/BV/$1.php [QSA,L]
Folgender Aufruf: http://www.domain.de/Verwaltung/Benutzerverwaltung wird dann unsichtbar für den User zu http://www.domain.de/Verwaltung/BV/index.php
oder
Folgender Aufruf: http://www.domain.de/Verwaltung/Benutzerverwaltung/erstellen wird dann unsichtbar für den User zu http://www.domain.de/Verwaltung/BV/erstellen.php

Das ganze kannst du ja nach belieben durch zusätzliche Regeln an deine Wünsche anpassen.

Grüße Uwe
TheUntouchable
TheUntouchable 01.01.2015 aktualisiert um 18:46:18 Uhr
Goto Top
Vielen Dank für deine Antwort und sorry für die lange Wartezeit auf eine Antwort von mir, Feiertage und so.. ;)

Das Ganze hat so wirklich super geklappt, nur bei dem "RewriteRule ([^/])$ /Verwaltung/BV/$1.php [QSA,L]" fehlt ein +: ([^/])$ --> ([^/]+)$ ;)

Muss jetzt noch mit den Weiterleitungen von Seite zu Seite rumspielen, das funktioniert ja jetzt auch anders.. ;)

Aber vielen Dank! Und ein frohes Neues face-smile

PS: Natürlich kann der User jetzt einfach irgendwas hinten eingeben, dann wird wegen der Fehlerseite dann doch der reale Pfad anezeigt.. ;)