Avatar billede avnes Nybegynder
29. august 2001 - 22:41 Der er 9 kommentarer og
1 løsning

Content Negotiation - sprog i Apache

Hejsa

Content Negotiation er en meget smart måde at tilbyde en HTML side (eller et serverside script) på flere forskellige sprog. Jeg ved godt at man i Apache f.eks kan bruge filnavn.html.dk hvis man ønsker at vise en fil på dansk, hvis browseren har Dansk som primær sprog.

Jeg ved også at Apache med mod_negotiation har nogle features, men jeg kan ikke lige finde den funktionalitet jeg ønsker. Det jeg ønsker er en RewriteRule baseret på sprog. F.eks hvis brugerens browser har Dansk som sprog, skal han forwardes til
www.mydomain.dk/dansk/, hvis han har spansk som sprog skal han forwardes til www.mydomain.dk/espanol/ og hvis hans sprog er engelsk skal han blive på www.mydomain.dk

Dette kan man lave ved hjælp filnavn.html.dk hvis denne filen indeholder en Meta Refresh tag, men findes der ikke en måde med Apache directives hvor jeg kan finde ud af hans sprog og så lave en RewriteRule ud af det ????

NB !(mydomian.dk er kun et eksempel)
Avatar billede thomasledet Nybegynder
30. august 2001 - 00:55 #1
har du kigger her:

http://httpd.apache.org/docs/content-negotiation.html

og her:

http://httpd.apache.org/docs/misc/rewriteguide.html

det du ønsker er vel noget i retning af

RewriteEngine  on
RewriteCond %{REMOTE_HOST} ^.+\\.dk$
RewriteCond %{REQUEST_FILENAME ^(.*)index\\.html$
RewriteRule  ^(.+) http://url.dk/dansk/$1

(er hurtigt skrevet... det er ikke sikkert, det virker... prøv dig frem)
Avatar billede thomasledet Nybegynder
30. august 2001 - 00:55 #2
ReverseDNS eller Hostlookup skal være On for at ovennævnte virker...
Avatar billede avnes Nybegynder
30. august 2001 - 10:29 #3
Thomas, du har måske nesten rigtig, men jeg kan ikke se at det findes en CGI variabel der hedder REMOTE_HOST. Den der passer bedre er HTTP_ACCEPT_LANGUAGE, men selv med din RewriteCond kan jeg ikke få det til at fungere.
Avatar billede avnes Nybegynder
30. august 2001 - 10:30 #4
REMOTE_HOST findes måske ikke fordi jeg af performance messige årsager har Hostlookup Off
Avatar billede thomasledet Nybegynder
30. august 2001 - 11:24 #5
det er derfor...:) hostlookup er ellers ikke så krævende... og er ofte en lækker ting...

problemet med HTTP_ACCEPT_LANGUAGE er at det ikke altid er \"pænt\".... der kan sagtens være flere sprog som så sidenhen er vægtede osv. Det kan være en bitch at lege med... med prøv dig frem...
Avatar billede avnes Nybegynder
30. august 2001 - 11:33 #6
Tak Thomas. Ikke et perfekt svar, men nok til at jeg kan komme videre, så du fortjener de 60 points :-)
Avatar billede thomasledet Nybegynder
30. august 2001 - 11:38 #7
jo tak... sidder du fast igen, må du bare spørge... :)
Avatar billede avnes Nybegynder
30. august 2001 - 12:27 #8
Det med REMOTE_HOST er faktisk ikke så godt, for det er ingen naturlig sammenheng mellom toplevel domain og sprog. F.eks er jeg en nordmand i Danmark som surfer fra et .com domain.
Har du et bud på en RewriteCond på HTTP_ACCEPT_LANGUAGE, f.eks:

HTTP_ACCEPT_LANGUAGE=\"da,en-us;q=0.7,de;q=0.3\"

Avatar billede thomasledet Nybegynder
30. august 2001 - 12:41 #9
du kunne skrive et regulært udtryk til at parse den value, du får fra din HTTP_ACCEPT_LANGUAGE... dette kunne gøres direkte i httpd.conf-filen, men det vil nok være smartere at lave et perl-script, der tager sig af det...

men eftersom at apache allerede har indbygget language detection, vil det nok være smartere at benytte sig af det.

kig lidt på de to links, jeg har postet i mit første svar...
Avatar billede thomasledet Nybegynder
30. august 2001 - 12:43 #10
jeg er dog ikke sikker på, at apache\'s sproggenkendelse er så god igen, da den, så vidt jeg kan se kun virker for http/1.0...

ellers ville det være smart at benytte sig af index.html.da og så sætte denne fil til at forwarde til http://url.dk/dansk/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester