rawb1t
Goto Top

Rewrite mit falschem Ordner

Hallo,

ich bastle gerade an einer Website. Für diesen Zweck will ich (zur Sicherheit) die Dateiendung .php verschleiern. Aus diesem Grund nutze ich folgendes Rewrite:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.(php|pl|py|cgi|htm|html)
RewriteRule ^/?(.*)\.(php|pl|py|cgi|htm|html)$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

Das funktioniert soweit auch. Der Zugriff auf login.php / login.html / login.pl etc wird umgeleitet zu /login. Jetzt ist aber das Problem, dass auf dieser Seite Benutzer Profile erstellen können, die mittels Username so aufrufbar sind:

www.domain.com/username

Dabei entsteht natürlich ein Konflikt mit möglichen vorhandenen Dateien. Ich hab mich mal umgesehen, wie andere Seiten das gelöst haben. Am besten hat mir das vorgehen von Twitter gefallen, die alle echten Dateien mit dem Präfix /i/ aufruft. (Also /i/login statt /login).

Das möchte ich in mein Rewrite auch einbauen, allerdings scheitere ich daran. (Ich möchte das mit /s/ - für "system" - lösen). Mod_Rewrite ist leider nicht meine Stärke. Kann mir jemand dabei helfen meine Zeilen so umzubauen, dass echte Dateien (mit Ausnahme von index) nur über folgende Syntax aufgerufen werden können: /s/login, /s/register, /s/pw-forget, etc...? Bzw das ganze auch gleich um eine Zeile ergänzen, die dann /(a-zA-Z0-9) in profile.php?$1 umwandelt, ohne dass eine Weiterleitung auf /s/profile?$1 oder so passiert?

Vielen Dank.

Content-Key: 331579

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

Printed on: April 18, 2024 at 22:04 o'clock

Member: rawb1t
rawb1t Mar 10, 2017 at 08:10:07 (UTC)
Goto Top
Habe es inzwischen selbst gelöst:

RewriteRule ^index\.(php|pl|py|cgi|htm|html)$ / [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.(php|pl|py|cgi|htm|html)
RewriteRule ^(.*)\.(php|pl|py|cgi|htm|html)$ /s/$1 [L,R=301]
RewriteRule ^s/(.*)$ /$1.php [L]

RewriteRule ^([a-zA-Z0-9]+)$ /profile.php?uid=$1 [QSA]