2009-07-03 8 views
4

Ist es möglich, neu zu schreiben (Apache Mod-Rewrite) eine URL von diesem:Kann ich meine URLs so umschreiben und ist das eine gute Idee?

http://www.example.com/view.php?t=h5k6 diese http://www.example.com/h5k6

Der Grund für diesen neu zu schreiben ist, dass die URL sein muss sehr kurz (ein bisschen wie ein kleiner URL-Dienst).

Würde diese neue URL immer noch meine view.php-Seite treffen? Wäre es möglich, weiterhin das super globale Array GET ($_GET) zu verwenden, um auf die Variable t zuzugreifen? Ich möchte immer noch meine index.php Seite zu diesem http://www.example.com zuordnen.

Ich würde auch Kommentare zu Auswirkungen, die dies haben kann, wie ich ein bisschen wie ein Noob bin. :)

Dank all

Antwort

12

Die Terminologie der mod-rewrite in die andere Richtung funktioniert. Anfragen würden wie folgt kommen http://www.example.com/h5k6 und würden intern in http://www.example.com/view.php?t=h5k6 umgeschrieben werden. Auf diese Weise können Ihre PHP-Skripte auf die Anforderungen antworten, als wären sie als GET-Parameter gesendet worden, aber die Benutzer sehen die URLs viel freundlicher.

Sie müssen also keine PHP-Skripte ändern, und Sie können weiterhin auf den Parameter t vom GET-Array zugreifen.

RewriteRule ^/(.*) /view.php?t=$1 

Vielleicht möchten Sie über spezifischere sein, was Sie akzeptieren (statt nur die catch-all .* Ausdruck):

In Ihrem Fall die Regel würde wie folgt aussehen. Sie können auch Ausnahmen von dieser Regel wünschen, wenn Sie in diesem Verzeichnis andere Seiten als view.php haben.

2

Versuchen Sie eine der folgenden Optionen:

# /view.php?t=h5k6 externally to /h5k6 
RewriteCond %{THE_REQUEST} ^GET\ /view\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*t=([^&]+)&?.*$ 
RewriteRule ^/view\.php$ /%2 [L,R=301] 

# /h5k6 internally to /view.php?t=h5k6 
RewriteRule ^/([0-9a-z]+)$ view.php?t=$1 [L] 
1

Ja, das auf jeden Fall möglich ist und genau die Wirkung, die Sie beschreiben. Ihre Terminologie ist jedoch rückwärts. Die "kurze" URL ist diejenige, die der Browser-Originall an den Server sendet, und sie wird in die längere Version umgeschrieben, die dann tatsächlich verarbeitet wird und zu einer PHP-Anfrage führt.

So gut wie der einzige Haken ist, dass bei unvorsichtiger Verwendung dies dazu führen könnte, dass Suchmaschinen beide URLs indexieren und doppelte Inhalte berücksichtigen, was schlecht für Ihr Ranking ist. Auf der einen Seite kann (und sollte) dies vermieden werden, indem niemals die "lange" Version veröffentlicht wird (d. H. Alle Site-internen Links haben das "kurze" Format). Da Sie sie jedoch möglicherweise versehentlich veröffentlichen (was leicht passieren kann), sollten Sie auch link rel="canonical" verwenden, um den Suchmaschinen die URL mitzuteilen, unter der Ihre Seiten indiziert werden sollen.

Verwandte Themen