Meertalige website met 'fake' folders en htaccess
Ik zit met het volgende situatie:
Ik heb een meertalige website opgezet (nl (default), engels en duits). Het kiezen van de taal gaat dmv een $_GET var (voor bijv 'en': *.php?lang=en).
Voor mooie url's kies ik voor 3 fake folders voor de corresponderende talen ('/nl','/en','/de'). Ik heb een eclipse pdt opzet met localhost/mywebsite/public/index.php
Nederlands is de standaard taal en ik wil de 'public' folder uit de url.
mijn huidige htaccess (in localhost/mywebsite/)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RewriteEngine on
RewriteBase /mywebsite
#rewrite root naar public en kies standaard 'nl'!
RewriteRule ^(.*) public/nl/$1 [R=301,L]
#vang de taal op en dmv zet in GET var
RewriteRule ^public/(nl|en|de|NL|EN|DE)/(.*) public/$2?lang=$1 [NC,L,QSA]
RewriteRule ^(nl|en|de|NL|EN|DE)$ http://localhost/mywebsite/public/$1/index.php [R=301,L]
#point css, images en js folders to public folder
RewriteRule ^img/(.+)?$ public/img/$1 [NC,L]
RewriteRule ^css/(.+)?$ public/css/$1 [NC,L]
RewriteRule ^js/(.+)?$ public/js/$1 [NC,L]
RewriteBase /mywebsite
#rewrite root naar public en kies standaard 'nl'!
RewriteRule ^(.*) public/nl/$1 [R=301,L]
#vang de taal op en dmv zet in GET var
RewriteRule ^public/(nl|en|de|NL|EN|DE)/(.*) public/$2?lang=$1 [NC,L,QSA]
RewriteRule ^(nl|en|de|NL|EN|DE)$ http://localhost/mywebsite/public/$1/index.php [R=301,L]
#point css, images en js folders to public folder
RewriteRule ^img/(.+)?$ public/img/$1 [NC,L]
RewriteRule ^css/(.+)?$ public/css/$1 [NC,L]
RewriteRule ^js/(.+)?$ public/js/$1 [NC,L]
Dit werkt dus niet. Het aanroepen van de website zou dus moeten gaan met:
localhost/mywebsite en dan moet er direct gepoint worden naar localhost/mywebsite/nl.
Ik hoop dat ik duidelijk genoeg mijn probleem heb geschetst en na uren en uren googlen,kloten en tutorials te hebben doorgrond kom ik er niet meer uit.
Alle hulp is welkom, bij voorbaat dank!
Gewijzigd op 01/01/1970 01:00:00 door NiVin
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
RewriteEngine on
RewriteBase /
#remove 'public' folder in url
RewriteRule ^public - [L]
#add a '/' after the language if there is none
RewriteRule ^(nl|en|de|NL|EN|DE)$ $1/ [NC,R]
#rewrite /[lang]/[file] into public/[file]?lang=[lang]
RewriteRule ^(nl|en|de|NL|EN|DE)/?(.*) public/$2?lang=$1 [NC,L,QSA]
#point css, images en js folders to public folder
RewriteRule ^img/(.+)?$ public/img/$1 [NC,L]
RewriteRule ^css/(.+)?$ public/css/$1 [NC,L]
RewriteRule ^js/(.+)?$ public/js/$1 [NC,L]
#set the language to default dutch if cookie is not set
RewriteCond %{HTTP_COOKIE} !lang=(.*)
RewriteRule ^([a-zA-Z]*)/?$ nl/$1 [R=301,L,NC]
#if language is in cookie, use it
RewriteCond %{HTTP_COOKIE} lang=(.*)
RewriteRule ^([a-zA-Z]*)/?$ %1/$1 [R=301,L]
RewriteBase /
#remove 'public' folder in url
RewriteRule ^public - [L]
#add a '/' after the language if there is none
RewriteRule ^(nl|en|de|NL|EN|DE)$ $1/ [NC,R]
#rewrite /[lang]/[file] into public/[file]?lang=[lang]
RewriteRule ^(nl|en|de|NL|EN|DE)/?(.*) public/$2?lang=$1 [NC,L,QSA]
#point css, images en js folders to public folder
RewriteRule ^img/(.+)?$ public/img/$1 [NC,L]
RewriteRule ^css/(.+)?$ public/css/$1 [NC,L]
RewriteRule ^js/(.+)?$ public/js/$1 [NC,L]
#set the language to default dutch if cookie is not set
RewriteCond %{HTTP_COOKIE} !lang=(.*)
RewriteRule ^([a-zA-Z]*)/?$ nl/$1 [R=301,L,NC]
#if language is in cookie, use it
RewriteCond %{HTTP_COOKIE} lang=(.*)
RewriteRule ^([a-zA-Z]*)/?$ %1/$1 [R=301,L]
Ik hoop dat iemand er nog iets aan heeft! Al het commentaar ter verbetering is natuurlijk welkom.
Gewijzigd op 01/01/1970 01:00:00 door niVin