2017-12-05 3 views
0

Ich habe ein sehr einfaches PHP-Templating-System erstellt, das ich verwende, um eine Seite mit dieser URL anzuzeigen: /basedir/index.php?page= homeProfile.php? User = Benutzername zu Profil/Benutzername schreiben

Der Start Inhalt wird durch das Skript home.php bedient.

Mit einer Rewrite-Regel in .htaccess möchte ich, dass meine URL wie folgt aussieht:/basedir/home.

Das Problem, das ich habe, ist, dass ich stecken geblieben bin, wenn es darum geht, eine weitere GET-Variable neu zu schreiben, die ich benutze, um das Profil eines Benutzers anzuzeigen. Die URL der Profilseite sieht jetzt wie folgt aus:/basedir/profile? User = username.

Jetzt möchte ich es so aussehen:/basedir/profile/username.

Bisher sieht meine .htaccess wie folgt aus:

RewriteEngine On 

RewriteBase /basedir/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) 
RewriteRule ^([^?]*) ?page=$1 [L,QSA] 

Ich habe keine Ahnung, ob das gut ist oder wenn ich eine völlig neue .htaccess-Datei zu schreiben.

+0

Laravel hat htaccess geschrieben, es funktioniert ziemlich gut. Sie können einfach ihre htaccess-Datei verwenden. https://laravel.com/docs/5.0/configuration#pretty-urls – anwerj

+0

Sie können auch dieses Tool überprüfen, http://htaccess.mwl.be/ wird Ihnen ein besseres Verständnis dafür geben, was vor sich geht. – anwerj

+0

danke @anwerj, ich habe es mir angesehen, aber ich kann es immer noch nicht bekommen ... vorerst X_x – emma

Antwort

0

Basierend auf Ihren Code, und mein begrenztes Verständnis, würde ich so etwas wie dies erraten:

RewriteRule ^profile/([^?]*) ?page=profile&user=$1 [L,QSA] 

.. setzen Sie sie über Ihre RewriteRule ^([^?]*) ?page=$1 [L,QSA].

+0

Es sollte 'profile.php? User =' –

+0

Ahhh, ich weiß nicht wirklich was @emma bedeutet, '/ basedir/profile? user = Benutzername' oder' /basedir/profile.php? user = Benutzername' oder '/ basedir /? Seite = Profil & user = Benutzername'. Vielleicht solltest du darum bitten, eine funktionierende Antwort zu schreiben. –

+0

Danke .. Ich habe den Titel nicht beachtet. : p Ich bin auch nicht 100% sicher über den Schrägstrich vor der profile.php, aber ich fiedle mit Details, bis es funktioniert. – LGT

0

Wie Sie bei http://htaccess.mwl.be/ Ihre URL zu sehen ist http://www.example.com/profile/username in http://www.example.com/basedir/?page=profile/username

Jetzt umgewandelt, was Sie tun müssen, um index.php in basedir gesetzt wird, wo die page explodieren und den Benutzernamen abzurufen.

$page = $_GET['page']; 
$parts = explode('/', $page); 


switch($parts[0]){ 
    case 'profile': 
     if(isset($parts[1])){ 
      $username = $parts[1]; 
      return doWhatEverYouWantToDoWithUsername($username); 
     } 
     return handleJustProfilePage(); 

    default: 
     return yourDefaultHandler(); 

} 

Dieser Ansatz genannt wird routing können Sie viel besser Bibliotheken mit einigen externen Routing machen.

+0

danke für diese Antwort! Aber gibt es eine Möglichkeit, es mit htaccess zu erledigen? – emma

Verwandte Themen