Jeg har rådspurgt min serverudbyder og de gav følgende, ikke helt "how-to-do"-hælpsomme, forklaring:
****** Her feedback fra serverudbyder omkring at fake Ø ****** The wikipedia example does not have a ø in the filename but as a GET request. Which is no problem, they are just using url rewriting so it does not look like a GET request. http://www.example.com/test.php?msg=ø It is not possible to use danish special letters in the url. ****** Slut på feedback fra serverudbyder omkring at fake Ø ******
Jeg har manuelt prøvet at oprette en fil med navn for-s%C3%98ren-da.php på serveren, men det løser ikke problemet. Der skal "snydes" via htaccess eller andet på en eller anden måde jeg ikke kan gennemskue.
Er der nogen her, som er kode-eksperter nok, til at kunne forklare hvordan Wikipedia og Red Barnet gør det?
Det "Ø" de viser er urlencoded utf-8 - du "må" ikke lave et filnavn, der er URL-encoded. Afhængig af serveropsætning kan et filnavn med ø måske opfattes som tegnsæt iso-8859-1.
Det er ikke vigtigt, hvad der ikke må gøres. Det er metoden de bruger, som er essensen. Jeg har egentlig ganske godt styr på .htacces til at styre rewrites, cache, expire osv, og udelukker fx helt "304" http requests på vores site. Men at "urlencode utf-8" så jeg kan levere et Ø i googles søgeresultater i url'en for undersiderne, er udenfor min paratviden om Apache og htaccess.
Derfor leder jeg efter en med decideret viden indenfor metoden som fx wikipedia og redbarnet bruger til at få Ø placeret i url'en.
Jeg aner det ikke, men det skulle ikke undre mig når google ( en søgemaskine ) laver et hit på sitet, så er det andre urls som vises. Søgning på "børnearbejde" på redbarnets hjemmeside, gi'r http://redbarnet.dk/Default.aspx?ID=4928
Og i metatags på redbarnet er jo også "børnearbejde"
Og b.t.w., fulgte lige et andet link fra siden du linker til på redbarnet, og i min firefox skulle den lige hente info fra "link.etyper.dk" ( mener det var dk ) Hvad et så end er .....
Det er nu ikke metatags der gør wikipedia eller redbarnet i stand til at få deres %C3%98 vist som Ø i googles søgeresultater. Etyper er vist i relation til statistik.
Nej, det er ikke sådan lige at finde en der har styr på .htacces i en sådan grad, at tricket fra wikipedia og redbarnet kan aflures...
Det kan klares med at definere det korekte tegnsæt (utf8 eller iso-8856-1) i html siderens header og bruge samme tegnsæt til alle filnavnene. Så kan google selv finde ud af at læse linksne og skrive dem korekt.
Dog er der et problem hvis brugeren selv taster et link med et ø i så bliver den som oftest sendt som iso-8856-1, alt efter hvad brugeren har sat sin standart til.
Det er her min viden om problemet slipper op (og sådan jeg fant denne side), jeg er ikke klar over om problemet kan løses enten ved at instille servere korekt, eller om man bliver nød til at lave et scrip der om diagere via 404 siden hvis url blev sent som iso-8856-1 men siden køre utf8 eller omvendt.
Dit eksempel med redbarnet er rigtig godt for den kan demlig håndtere url'et i både utf8 og iso-8856-1 uden problemer, men hvor dan de gør det er jo så spørgsmålet.
Jeg har nu nået frem til en midler tidig løsning, men lige som svenskeren kan jeg ikke få store bogstaver til at virke, det er meget mystisk for skifter de godt nok ud men det bliver ikke til de rigtige UTF8 tegn.
Ok jeg har fundet ud af hvad der sker når man forsøge at konvatere det store bogstaver, de ender som nogle andre af en uforklarlig ground, jeg har krevet en liste håber der er nogen der kan se hvad det er der gør det
Jeg har fået lavet en regl der kan håndtere et special tegn, jeg kan ikke rigtig få den til at virke så den fikser flere ind et så hvis nogen har en ide så skriv den endelig.
jeg har self forsøg at skrive den som flere regner men lige lidt hjælper det #springer over hvis der er  i url men den skal kun gøre det hvis der er ¿ RewriteCond %{REQUEST_URI} !¿ RewriteRule (.*)(¿)(.*) $1%C2$2$3
Selv det ville heller ikke være godt nok for der kan jo være flere af det samme tegn så det ultimative ville være hvis den er statte alle tilfælde af ¿ hvor der ikke er  for and. Men jeg kan ikke få negering til at virke
#springer over hvis der er  i url men den skal kun gøre det hvis der er ¿ RewriteRule (.*)[^Â]+¿(.*) $1%C2¿$3
He sjovt nok har eksperten.dk ikke styr på tegnsætted på deres sider så du kan nok ikke kopiere koden for nu har jeg set den på 3 forskælige måde på 3 forskælige maskiner, jeg poster it link til en .htaccess do kan donloade hvis du har lyst. Ind til da vil jeg forsøge at arbejde lidt videre med at få det til at virke med tegn og store bogstaver.
Ok det er nu lykeds mig at lave en række regler der ændre alle iso-8859-1 tegn om til utf-8 tegn.
Og så lige for at genopfriske hvad du skal gøre, gem alle html filer i UTF-8 og tilføj den nødvendige header <meta http-equiv="content-type" content="text/html; charset=utf-8" /> Gemme alle filer med filnavne i UTF-8, de fleste styre systemer brugere UTF-8 men hvis du gemmer filer via ftp skal du sørge for at den gør det i UTF-8, Hvis ikke din ftp klient kan det vil jeg forslå dig at bruge smartFTP.
Der er 3 af reglerne der kræver at du har apache 2.0 så hvis du kun har 1.3 skal du udkomentere dem, men så vil den ikke virke med tegne og 2 store bogstav (Ã & Ã).
Da mit site er fanget på en apache 1.3 maskine har jeg arbejded med nogle andre metoder som faktisk virker bæder men det kræver så php og adgang til 404 filen (kan normal stilles via .htaccess).
I toppen af 404 skal denne php kode indsættes så burde æøå virke på siden samt japansk hvis deres browser er konfiguered på en ligende måde, hvilket jeg ikke håber men har nu inkluderet dem alige vel :)
Vores server kører apache 2.0, så jeg har reserveret hele weekenden til at sætte mig 100% ind i din rigtig, rigtig gode gennemgang (og løsning) og til at få det op at køre, så det kan lanceres med specialtegn fra på mandag.
Jammen det lyder jo godt. Hvis du har adgang til httpd.conf (appache's configurations filen er det bedst at sætte koden ind der og så behøves du ikke RewriteBase /.
Siden du godt kan bruge apache metoden har jeg lige opdateret filen med de ekstre tegn der er i Windows-1252 tegnsætted, det er bland andet tegn som € ™ ‰ „“ så hvis du allerede har hented filen bør du hente den igen.
Og for godt ordens skyld er her en liste af links du bør besøge hvis du vil sætte dig grundigt ind i det jeg har lavet her.
Hvordan urls skal skrives i UTF-8 http://en.wikipedia.org/wiki/Percent-encoding I følge denne side burde alle uri implementationer siden januar 2005 være i utf-8 så det er hvist på høje tid vi fand en løsning på det her :P
Og tilsidst vil jeg lige sige til dem der også må ty til php for at løse dette problem at jeg glemte at urlescape $url, det bliver automatisk gjordt med apache metoden (der for svenskeren ikke kunde få store bogstaver til at virke) men skal manuelt gøres her, den simpleste måde er at indsætte denne linje føre den første header kommando. $url = implode("/", array_map("rawurlencode", explode("/", $url))); Den tager dog ikke højde for andet ind / i filstien så hvis i benytter url query eller fukus (#) må i self stå for at lave en beder urlescape funktion. if('ISO-8859-1') skulde også have været if(!$encoding || $encoding == 'ISO-8859-1'), og række følgen af tegnsættene i mb_detect_encoding er ikke gendem tested (nøjes selv med 'UTF-8, ISO-8859-1') men de 2 fejl ophæver hindanden så det er ikke nøvendigt at fixe :P
Hvis du brugere smartFTP kan du indstille den til at køre UTF-8 under Tools->Settings->Transfer og så skifte Code Page fra Auto til UTF8. Det kan også gøres som en per server insdstilling hvis du har server der skal køre et andet tegnsæt.
Jeg fik lige en ide - er det muligt simpelthen at udvide din htaccess-fil til blot at tage et hvilket som helst navngiven fil, fx "denneher.php" og lade den rewrite som "fors%C3%b8renda.php" og at man så slipper for al postyr med at sætte UTF-8 ELLER ISO-8859-1 ensartet ALLE steder, som jeg forstår det?
Ikke på den måde som min htaccess file er satop, den gør bare det at den redirecter browser som ikke korekt sender som utf8. Hvis du vil efter lade dine filer med anis navne og bare få det til at se ud som om de har utf8 navne skal det gøres ved at redirecte intert fra utf8 nanet til det interne navn, alle links i dine html filer skal så pege på de virtuelle filer og du skal stadig lave dem om til utf8. det eneste du slipper for er at omdøbe dine filer, men tilgendæld ville siden ikke virke hvis du downloader den.
Du kan selfølige også vælge at køre din side i windows-1252 og så lave htaccess filen om så den redirecter utf8 urls til windows-1252 istedet, men så har du være tegn og du skal stadig sikre dig at alle html filer er gemt i windows-1252 og har det korekte meta tag for denne ellers risikere du at google ser dine urls som volapyk. her ville du så slippe for at skulde sætte dit ftp program til utf8.
Da langt de fleste browser sender som utf8 vil jeg klart forslå at du holder dig til det, faktisk er den eneste morderne browser der ikke sender som utf8 så hvidt jeg kan se firefox og kun når den køre på windows.
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.