Avatar billede learner Praktikant
26. november 2004 - 10:33 Der er 26 kommentarer og
1 løsning

Jeg er i tvivl, hvad skal jeg vælge? vedr søgemaskine og sprog

Hej, jeg er ved at være færdig med en ny udgave af min hjemmeside. Jeg har lavet den med flere sprog. Og det virker fint :o) Det kører ved hjælp af en session variabel og så sættes der en cookie, så den kan huske næste gang.

Men nu kommer jeg så til et valg som jeg synes er svært.
Jeg vil gerne tage hensyn til både brugerne og søgemaskinerne.

Jeg kan vælge at lave:

1. Første gang folk besøger siden møder de en meget enkel 'vælg sprog side' som kun dukker op ved første besøg. Jeg $_POST'er en sprogvariabel og viser den side folk ville se. Dvs at deep-links virker 100% som de skal. Man bliver bare lige spurgt om sproget først. Problemet er muligvis at søgemaskinerne ikke kan finde ud af det. For jeg vil jo gerne have at den alle siderne(sprogene) bliver registreret af søgemaskinerne. Min 'vælg sprog side' er på engelsk og det samme er min metakoder på den. Og så er det jeg frygter at søgemaskinerne kun registrerer den engelske meta på vælg sprog siden.

2. Jeg kan sætte det op således at den selv tjekker 1. og 2. prioriteret sprog. Altså åbner den selv i det sprog som brugeren taler(næsten altid) Hvis brugeren ændrer sprog, så gemmes der en cookie så den husker hans sprog næste gang. Men har robotterne/søgemaskinerne registreret et 1. og 2. sprog? Ellers finder de jo kun feks den engelske side på denne måde?

Eller er det ligegodt hvilken løsning jeg vælger?

Jeg har en robots.txt der siger 'kig på alt'

Hjælp mig med nogle andre/flere synspunkter og skriv hvad du synes jeg skal gøre.
Avatar billede coderdk Praktikant
26. november 2004 - 11:14 #1
Du kunne undersøge $_SERVER["HTTP_USER_AGENT"], hvis den indeholder "google" så antag at sproget er engelsk eller lignende?
Du kan jo evt. lave et link på hver side der viser siden i det andet sprog (vha en $_GET - hvor GET'en havde prioritet over 1. sprog) - Så ville den vel indeksere alt?
Avatar billede coderdk Praktikant
26. november 2004 - 11:15 #2
Evt kunne du gøre som boomtown.net, der ser deres URL'er sådan ud: boomtown.net/da_dk/ - det er i virkeligheden en rewrite der skriver URL'en om til noget i stil med: boomtown.net/index.php?language=da_dk - så din sprogvalgsside ville være "rigtige" links som søgemaskiner kan følge...
Avatar billede learner Praktikant
26. november 2004 - 14:28 #3
Det var 2 gode indslag coderdk. Tak

Hvad synes du vedr om jeg skal lave en modtagerside hvor folk skal vælge sprog?
Og tror du det er en ulempe i forhold til søgemaskinerne og søgeoptimering osv.

Jeg har siden kørende i en testversion.
Se den på www. tilbudsmaskinen .dk
Den kører ikke hele tiden, men ligger der de næste timer.
Jeg må bede besøgende om ikke at 'pille for meget' for det er en ufærdig testversion.
Takker

ps lav venligst ikke links til testsiden herinde.
Avatar billede coderdk Praktikant
26. november 2004 - 18:39 #4
Det med at lave en modtagerside er omsonst hvis du bruger den sidste, for så kan du kun deep-linke til sider hvor der allerede i URL'en er angivet sprog ;)
Avatar billede learner Praktikant
27. november 2004 - 00:37 #5
Jo jeg forstår dig godt... :o)

Men hensigten med modtagersiden er jo at folk skal vælge deres sprog.
Og det er jo ganske godt.

Har du kigget på siden? :o)

Her er et deeplink som gerne skulle virke (sæt det selv lige sammen)
Det virker både hvis det er første visit og hvis du har været på siden før.
Jeg synes det er lidt smart at den første gang spørg hvilket sprog du vil have. eller hvad synes du?
www. tilbudsmaskinen .dk/index.php?ifr=../pages/priser.php

Men kan søgerobotter finde ud af det? Det er det store spørgsmål...
Avatar billede coderdk Praktikant
27. november 2004 - 02:42 #6
Jo, det er smart nok! Men jeg tror nu ikke søgemaskinerne kan finde ud af det - Jeg er ikke sikker ;)
Avatar billede learner Praktikant
01. december 2004 - 17:22 #7
ov, jeg fik en ide...
Kan man tjekke om det er en robot eller en bruger der er på besøg? Og kan man få at vide hvilket land/sprog søgemaskinen 'taler'

For så kan jeg jo allerførst tjekke om det er en søgemaskine.
Hvis det er , så find ud af hvilket sprog, og gå direkte ind på forsiden med det sprog. :o)

Det ville være rigtig smart :o)

Kan jeg gøre det? (med PHP)
Avatar billede learner Praktikant
01. december 2004 - 17:23 #8
Eller kan jeg skrive det i robots.txt'en på en smart måde?
Avatar billede coderdk Praktikant
01. december 2004 - 18:11 #9
Se min kommentar 26/11-2004 11:14:01, du kan checke på $_SERVER['HTTP_USER_AGENT']
Du kan sikkert finde en liste på google, på et par sekunder fandt jeg:
  http://www.michaelhorowitz.com/search.engines.html


:)
Avatar billede learner Praktikant
01. december 2004 - 18:19 #10
oki, jeg kigger på det...
Avatar billede learner Praktikant
09. december 2004 - 18:32 #11
Hvordan finder jeg så ud af hvad folks 1. sprog er sat til?
Og 2.sprog?

Og vedr $_SERVER['HTTP_USER_AGENT']
så tror jeg nok jeg vil bruge den metode som coderdk nævner.
Jeg skal bare have fundet ud af hvordan jeg præcist gør det

:o)
Avatar billede coderdk Praktikant
09. december 2004 - 18:42 #12
Jeg tror du kan få det ved:

$lang = explode( ",", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
if ( count( $lang ) > 0 )
{
  $lang = $lang[0];
}
else
{
  $lang = 'da';
}

:)
Avatar billede learner Praktikant
09. december 2004 - 19:14 #13
Ok, hvad er $lang så lig med feks ved tysk osv
Kender du evt et sted jeg kan finde sprogene (da, en osv)
Jeg får Dansk, Svensk, Norsk, Tysk, Engelsk og Spansk.
Og måske flere hen ad vejen...
Avatar billede coderdk Praktikant
09. december 2004 - 21:04 #14
Jeg tror du kan bruge google til at finde dem :)

  http://google.dk/search?q=iso+language+codes
Avatar billede coderdk Praktikant
09. december 2004 - 21:05 #15
(det er ikke dem der hedder f.eks. dk, men da jo, bare så du er opmærksom!)
Avatar billede learner Praktikant
09. december 2004 - 22:17 #16
ok tak, jeg kigger på det i morgen.. :o)
Avatar billede learner Praktikant
10. december 2004 - 08:02 #17
Her er det jeg umiddelbart har lavet:

if ($_SESSION['languageid']){
    $languageid    = $_SESSION['languageid'];
} else {
    if ($_COOKIE['languageid']){
        $languageid    = $_COOKIE['languageid'];
        $_SESSION["languageid"] = $languageid;
    } else if (!$choosing_language){ // ellers står den bare og gentager choose-lng.php
        if ($HTTP_ACCEPT_LANGUAGE == "da"){
            $languageid    = "1";
        } else if($HTTP_ACCEPT_LANGUAGE == "en"){
            $languageid    = "2";
        } else {
            // er det en søgemaskine som ikke har et 1. sprog? Så skal der vælges et sprog
            if ($_SERVER["HTTP_USER_AGENT"] == ???søgemaskine??? ){
                $rnd = rand(1,2);
                $languageid = $rnd;
            } else {
                require($dir . "choose-lng.php");
                exit;
            }
        }
    }
}


Jeg har dog svært ved denne linie.
if ($_SERVER["HTTP_USER_AGENT"] == ???søgemaskine??? ){

Kan du evt hjælpe mig med et forslag :o)
Avatar billede coderdk Praktikant
10. december 2004 - 11:56 #18
Du er interesseret i de agents der står her: http://www.michaelhorowitz.com/search.engines.html
Men måske nogle af dem er ok, prøv med:

    $search_signature = "/(bot\b|crawl|slurp|spider)/i";
    if ( preg_match( $search_signature, $_SERVER['HTTP_USER_AGENT'] ) )
    {

Den fanger vist de fleste...
Avatar billede learner Praktikant
10. december 2004 - 14:06 #19
TAAAK coderdk :o) (der er vist point til dig :)

Den fanger vist de fleste...
Men hvad så, fanger den ik os nogle almindelige brugere :o)

Og Så er det leg jeg har et par spm:
1 hvis nu der kommer en 'bot', kan den så have $HTTP_ACCEPT_LANGUAGE == "en" ??
2 Er en bot's $HTTP_ACCEPT_LANGUAGE overhovedet == "?noget?"

Hvis en bot ikke fortæller $HTTP_ACCEPT_LANGUAGE == "en" eller "da" ...
skal jeg så sætte $languageid = rand(1,2);

Undskyld hvis det er lidt forvirrende hvad jeg skriver, men jeg har lidt svært ved at formulee det jeg mener :o)
Avatar billede coderdk Praktikant
10. december 2004 - 14:23 #20
Mjooh, den fanger alm. brugere hvis de bruger browsere der har et navn der ender på "bot", eller har noget med crawl, slurp eller spider i sit navn ;)

Jeg ved faktisk ikke, om bots sætter sprog når de crawler...

Ja, hvis du godt vil have at de crawler begge sprog, så er det måske en god idé at lave sådan noget randomhalløj...

:)
Avatar billede learner Praktikant
10. december 2004 - 14:33 #21
Ok, hvis jeg nu laver det som vi har talt om herover, hvordan kan jeg så evaluere om det er en god løsning? Kan jeg tjekke på en måde om det virker som det skal?

Mærkeligt spm, det ved jeg godt :o)
Men måske har du lige et trick :o)
Avatar billede coderdk Praktikant
10. december 2004 - 14:37 #22
Hmm, du kunne bestille en crawl hos google: http://www.google.dk/addurl.html
Der går nok nogle dage, men så kan du jo prøve at søge på noget der står på dit site. F.eks. hvis der står "reciprok" på din side så søg: reciprok site:ditsite.dk
Avatar billede learner Praktikant
10. december 2004 - 14:50 #23
Ok, tak. Jeg har givet dig point'ene.

Hvis der bliver mere, så kan det godt være jeg lige skriver herinde igen :o)

Men Tak for det
Avatar billede learner Praktikant
10. december 2004 - 15:37 #24
det er kommet til at se ca sådan ud nu:

if ($_SESSION['languageid']){
    $languageid    = $_SESSION['languageid'];
} else {
    if ($_COOKIE['languageid']){
        $languageid = $_COOKIE['languageid'];
        $_SESSION["languageid"] = $languageid;
    } else if (!$choosing_language){ // ellers står den bare og gentager sig selv for choose-lng.php includerer også denne fil :o)
        // her findes sprogkoderne http://www.w3.org/WAI/ER/IG/ert/iso639.htm
        if ($HTTP_ACCEPT_LANGUAGE == "da"){
            $languageid = "1";
        } else if($HTTP_ACCEPT_LANGUAGE == "no"){
            $languageid = "1";
        } else if($HTTP_ACCEPT_LANGUAGE == "sv"){
            $languageid = "1";
        } else if($HTTP_ACCEPT_LANGUAGE == "es"){
            $languageid = "2";
        } else if($HTTP_ACCEPT_LANGUAGE == "af"){
            $languageid = "2";
        } else if($HTTP_ACCEPT_LANGUAGE == "en"){
            $languageid = "2";
        } else {
            // er det en søgemaskine?
            $search_signature = "/(bot\b|crawl|slurp|spider)/i";
            if ( preg_match( $search_signature, $_SERVER['HTTP_USER_AGENT'] ) ){
                $languageid = rand(1,2);
            } else {
                require($dir . "choose-lng.php");
                exit;
            }
        }
    }
}
Avatar billede learner Praktikant
10. december 2004 - 16:25 #25
Det virker umiddelbart rigtig fint :o)

Jeg har lavet nogle ændringer og smider det hele her, så andre evt kan bruge noget af det:

if ($_GET['xx']){
    $languageid    = $_GET['xx'];
}
if ($_POST['languageid']){
    $languageid = $_POST['languageid'];
}

if ($languageid){
    $_SESSION["languageid"] = $languageid;
    setcookie("languageid",$languageid,time()+9999999);
} else {
    if ($_SESSION['languageid']){
        $languageid    = $_SESSION['languageid'];
    } else {
        if (isset($_COOKIE['languageid'])){
            $languageid    = $_COOKIE['languageid'];
            $_SESSION["languageid"] = $languageid;
        } else if (!$choosing_language){ // ellers står den bare og gentager sig selv for choose-lng.php includerer også denne fil :o)
            // her findes sprogkoderne http://www.w3.org/WAI/ER/IG/ert/iso639.htm
            if ($HTTP_ACCEPT_LANGUAGE == "da"){
                $languageid    = "1";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else if($HTTP_ACCEPT_LANGUAGE == "no"){
                $languageid    = "1";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else if($HTTP_ACCEPT_LANGUAGE == "sv"){
                $languageid    = "1";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else if($HTTP_ACCEPT_LANGUAGE == "es"){
                $languageid    = "2";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else if($HTTP_ACCEPT_LANGUAGE == "af"){
                $languageid    = "2";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else if($HTTP_ACCEPT_LANGUAGE == "en"){
                $languageid    = "2";
                $_SESSION["languageid"] = $languageid;
                setcookie("languageid",$languageid,time()+9999999);
            } else {
                // er det en søgemaskine?
                $search_signature = "/(bot\b|crawl|slurp|spider)/i";
                if ( preg_match( $search_signature, $_SERVER['HTTP_USER_AGENT'] ) ){
                    $languageid    = rand(1,2);
                    $_SESSION["languageid"] = $languageid;
                    setcookie("languageid",$languageid,time()+9999999);
                } else {
                    require($dir . "choose-lng.php");
                    exit;
                }
            }
        }
    }
}
Avatar billede learner Praktikant
10. december 2004 - 16:29 #26
Der er jo nok andre end mig som får brug for et sådan sprogvalg-script som tilgodeser søgemaskiner osv.

Så selv om jeg har fået svar, så kan tråden jo godt fortsætte lidt....

Skriv endelig hvis du har kommentarer der kan forbedre scriptet :o)
Avatar billede learner Praktikant
10. december 2004 - 17:10 #27
ups.. glemte lige at $HTTP_ACCEPT_LANGUAGE
skal erstattes med $_SERVER['HTTP_ACCEPT_LANGUAGE']
for at få det til at virke... :o)

Men jeg forstår ikke, det virker ikke i mozilla firefox. Hvorfor ikke?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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