2011-12-23 15 views
17

provo a cercare stackoverflow ma non riesco a trovare la risposta..htaccess page e lang error

quindi ho bisogno di scoprire quale dominio quale sottodominio è l'utente e quale pagina sta caricando.

esempio: en.domain.com/contactus

questo dovrebbe caricare la pagina contattarci inglese.

Quello che ho è:

RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC] 

RewriteCond %{HTTP_HOST} ^en.domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC] 
RewriteCond %{HTTP_HOST} ^fr.domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=fr&page=$1 [L,NC] 
#etc... 

ma per qualche ragione, quando mi associo get per la pagina, il valore è: index.php quindi non posso leggere la pagina.

risposta

18

Ecco cosa dovreste usare:

RewriteEngine On 
RewriteBase/

SetEnvIf Host ^www\. lang=en 
SetEnvIf Host ^en\. lang=en 
SetEnvIf Host ^fr\. lang=fr 

RewriteCond %{REQUEST_URI} !\.(css|png|gif|jpe?g|js)$ [NC] 
RewriteRule ^([a-z0-9_\-]+)/?$ index.php?lang=%{ENV:lang}&page=$1 [L,NC,QSA] 

Il %{ENV:lang} sarà letto dal SetEnvIf (dal sub-dominio) e impostare la lingua corretta si ottengono da $_GET['lang']; (nel codice PHP - ammesso che sia PHP)

In questo modo, qualsiasi sottodominio verrà caricato dinamicamente senza creare più regole per il sottodominio. Ho anche aggiunto una regola che impedisce il caricamento di immagini o JavaScript come pagina.

+0

grazie mille, cambio qualche cosa ma questo funziona perfettamente. – goblar

+0

benvenuto, felice di poterti aiutare, grazie –

+4

+1 per usare setenvif – Tech4Wilco

Problemi correlati