Ankündigung

Einklappen
Keine Ankündigung bisher.

Rewrite mit falschem Ordner

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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:

    Code:
    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.

  • #2
    Hab es inzwischen selbst hinbekommen. Falls mal jemand vor einem ähnlichen Problem steht:

    Code:
    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]

    Kommentar

    Lädt...
    X