2009-04-02 6 views
2

zu Abfragezeichen Was ist der einfachste Weg, diese Anforderungen zu konvertieren:mod_rewrite Verwenden von Ordnern zu konvertieren

http://www.example.com/en/ 
http://www.example.com/en/index.php 

An:

http://www.example.com/index.php?language_id=en 

Es gibt verschiedene PHP-Dateien, so dass die Regel auch abzubilden

benötigen würde
http://www.example.com/en/anyfile.php 

An:

http://www.example.com/anyfile.php?language_id=en 

Die Sprach-ID kann ein beliebiger Zwei-Buchstaben-Code sein (es wird innerhalb des PHP-Skripts überprüft, um sicherzustellen, dass es gültig ist).

Vermutlich muss ich .htaccess verwenden, und jeder Rat, wie man das oben genannte implementiert, würde sehr geschätzt werden. Vielen Dank.

aktualisieren

Die für mich gearbeitet folgen.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ([a-z]+)/(css|js|images)/(.+) /$2/$3 [L] 
    RewriteRule ([a-z]+)/(.+).php /$2.php?language_id=$1 [QSA,L] 
    RewriteRule ([a-z]+)/$ /index.php?language_id=$1 [QSA,L] 
</IfModule> 

Dies auch wieder Routen-Anfragen an den css, js und Bilder Ordner zurück in den Stammordner. Es funktioniert auch, wenn kein Dateiname eingegeben wird und automatisch zu index.php umgeleitet wird.

Antwort

2

Sie wahrscheinlich die QSA Flagge auf Ihre Rewrite-Regeln, hinzufügen möchten, welche auf die neu geschrieben Anforderung alle addiitonal Bits auf die Query-String anhängen wird, z.B.

RewriteRule magic here [PT,QSA] 
+0

Dank der QSA-Flag ist das, was ich gesucht habe :-) – Mun

+0

danke, ich mich immer gefragt, was das Flag war für –

1
RewriteRule /([^/]+)/(.*) /$2?language_id=$1 
0

Ich verwende für freundliche URLs folgende Konstruktion:

RewriteRule ^([^/]+)[/]{0,1}(.*)$ index.php?q=$2&language=$1 [L,QSA,NC] 
Verwandte Themen