2009-07-11 8 views
2

Ich habe derzeit eine Website, die ich in Bezug auf SEO optimieren möchte.Wie kann ich Abfrageparameter in Pfadparameter in Apache umschreiben?

Ich habe die Seite bekam mit URLs arbeiten wie:

domain.com/?app=about

In meiner app wird $_GET[app] auf 'über', wie erwartet .

Jetzt möchte ich es so machen, dass eine URL wie domain.com/about behandelt wird, als wäre es domain.com/?app=about.

Wie kann ich dies in einer Apache .htaccess Datei tun? Wille

RewriteEngine on 
RewriteRule ^([A-Za-z]+)$ /index.php?app=$1 

Dies:

Antwort

8

Diese sind bekannt als RewriteRule s, und sie sind ziemlich einfach:

RewriteEngine on 
RewriteRule ^about$ /index.php?app=about 

Here's the documentation

Was macht sie generisch, wie dies etwa machen Sie eine Anfrage an etwas wie/Mitarbeiter oder/Kontakt Weiterleitung an index.php? app = [Mitarbeiter | Kontakt]

+0

gibt es sowieso, um dies generischer zu machen, d. H., Einen allgemeinen für alle Apps zu haben, statt einen für jede App zu schreiben? – bear

+0

+1 - aber dieses Beispiel funktioniert, aber wenn Sie ein paar Dinge neu schreiben müssen, ist es besser, eine allgemeinere Lösung zu verwenden. Was ist mit^^ [^ /] $ index.php? App = $ 1' Ich könnte in dieser Regex falsch sein, aber die allgemeine Idee ist da: P – alex

+0

Dank Ihnen beiden: D – bear

2

verwenden in der .htaccess

RewriteEngine on 
RewriteBase /your-site # only if neccessary 

RewriteRule ^([^/])$ index.php?app=$1 [R,L] 

EDIT

ich hinzugefügt, um die L-Flag Bedeutung Prozess dies als die letzte Regel, und der R-Flag, das für sich allein nicht die URL ändert .. schreibt nur intern neu. Durch Ausführen von R = 301 wird der Browser an die neu geschriebene Seite weitergeleitet, was für das Debugging nützlich ist.

+0

es ist da, aber scheint, dass etwas nicht stimmt . http://thinkteen.co.uk versuchen/Kontakt oder/Personal :) – bear

+0

Nein:/Ich kann immer noch nicht meinen Kopf drum herum – bear

0

allgemeine .htaccess Erstellen der Pfad mit der folgenden Zeile durchgeführt werden gebeten bekommen kann:

RewriteRule ^((.+/)+)$ /index.php?path=$1 [L,B] 

Diese Sie geben den Pfad angefordert entkam richtig so, wenn der angeforderte Pfad ist /hallo/Welt Sie wird hallo% 2Fworld im Pfadparameter erhalten. Verwenden Sie die PHP-Funktion urldecode(), um das ursprüngliche Format zu erhalten.

Funktioniert nur, wenn die URL mit '/' endet.

HINWEIS Wenn Sie andere Schreibvorgänge in der gleichen Datei haben, sollten Sie diese Datei als letzte einfügen, da sie im Grunde allem entspricht.

Verwandte Themen