2009-04-22 4 views
3

Angenommen, ich habe die URL http://example.com/user/me, wobei mir der Benutzername ist. Wenn der Benutzer die URL in die Adressleiste eingibt, möchte ich die Details des Benutzers anzeigen. Ich will nicht Urls wie http://example.com/user.php?user=meWie mache ich lesbare URLs?

Jede Hilfe dankbar, auf LAMP Arbeits

+0

Suchen Sie, wie Sie etwas in Ihrem eigenen Code ähnlich machen oder SO ändern? (Schlage schnelle Klärung vor, sonst wird es als Vorschlag für SO verstanden, die zu User Voice gehört.) – Richard

+0

in meinem Code, url sollte Dinge leicht machen –

+0

Schau dir dieses [mod_rewrite tutorial] (http: //www.workingwith. me.uk/articles/scripting/mod_rewrite) –

Antwort

5

Eine Möglichkeit, dies zu tun genannt mod_rewriteApache-Modul verwendet. Sie können dann die URLs für /user/([a-z]+) umschreiben, um auf /user.php?user=$1

zu verweisen. Suchen Sie für die Details nach der Dokumentation für mod_rewrite.

4

wäre die einfachste Art und Weise (in .htaccess, in der Server-Konfiguration oder in Ihrer vhosts Konfiguration) sein:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Diese alle Ihre Anfragen weiterleiten, die ein Verzeichnis oder ein symbolische keine Datei überein Link zu Ihrem index.php. Dort können Sie den Anforderungs-URI überprüfen, um zu bestimmen, was zu tun ist. In der Tat benötigen Sie eine Art Dispatcher, der die URL dekonstruiert, um zu bestimmen, welche Aktion ausgeführt werden soll. In der Tat könnte dies zu einer MVC-Implementierung führen - aber das ist keine Voraussetzung.

+0

hey, echo $ _GET ['u']; Echo "
"; $ count = strlen ($ _ SERVER ['PHP_SELF']); echo "erste Zählung; $ count
"; $ nme = $ zählen - strlen (pete); echo "zweite Zählung; $ nme
"; echo substr ($ _ SERVER ['PHP_SELF'], $ nme); ? –

+0

auch das obige macht nur diese http://stackoverflow.com/user/me/ und nicht diese http://stackoverflow.com/user/me beachten Sie die "/" –

0
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?u=$1