Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

.htaccess page and lang error

i try to look on stackoverflow but i can't find my answer.

so i need to find out which domain which sub-domain the user is and which page is loading.

eg: en.domain.com/contactus

this should load the english contact us page.

what i have is:

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...

but for some reason when i echo the get for page, the value is : index.php so i cannot read the page.

like image 406
goblar Avatar asked Dec 23 '11 19:12

goblar


1 Answers

Here's what you should use:

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]

The %{ENV:lang} will be read from the SetEnvIf (from the sub-domain) and set the correct language you will get from $_GET['lang']; (in your PHP code - assuming it's PHP)

This way, any of the sub-domain will be dynamically loaded without creating rules over and over for sub-domain. I also added a rule that prevent loading images or JavaScript as page.

like image 160
Book Of Zeus Avatar answered Sep 19 '22 14:09

Book Of Zeus