301 redirected url verkrijgen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 28-08 19:32
Ik heb de volgende site:

http://www.example.com/

Op deze site heb ik meerdere talen:
example.com/us/
example.com/uk/
example.com/de/
example.com/fr/
etc...

Gebaseerd op je IP (GeoIP script) zal je als bezoeker worden doorverwezen naar de desbetreffende taal, als je uit US of UK komt. Andere talen worden bepaald aan de hand van de de browsertaal.

Nu hebben we /us/ verwijderd en deze laten we met een 301 rewritten naar http://www.example.com/.

Als ik kijk met live http headers dan gebeurt nu het volgende:
example.com/us/ krijgt een 301 naar
example.com/ en deze wordt dan aan de hand van je afkomst/browser taal met een 302 (GeoIP script) verwezen naar bv:
example.com/de/

Dus een 301 naar een 302... niet echt ideaal uiteraard.

Hoe kan ik achterhalen waar de bezoeker "vandaan" komt? Ik heb gekeken naar PHP REFERER, maar dat is volgens de PHP handleiding zelf niet vertrouwen een leek in dit geval ook niet te werken.

Heeft iemand hier mss een idee?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 14:28

Salandur

Software Engineer

ik denk dat je het beste de ingestelde gebruikertaal kan gebruiken, want dit levert de gewenste taal op. Als ik mijn taal op mijn laptop op Nederlands heb ingesteld en ik ben in Engeland krijg ik met jouw script de verkeerde taal-versie te zien. Of, zoals op mijn werk, ik ben in Nederland, maar de verbinding loopt over Duitsland, dan krijg je ook vreemde resultaten.

[ Voor 20% gewijzigd door Salandur op 08-06-2010 10:29 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 07-07 15:40
Salandur schreef op dinsdag 08 juni 2010 @ 10:28:
ik denk dat je het beste de ingestelde gebruikerstaal kan gebruiken, want dit levert de gewenste taal op. Als ik mijn taal op mijn laptop op Nederlands heb ingesteld en ik ben in Engeland krijg ik met jouw script de verkeerde taal-versie te zien. Of, zoals op mijn werk, ik ben in Nederland, maar de verbinding loopt over Duitsland, dan krijg je ook vreemde resultaten.
Eens, zelf heb ik buitenlandse collega's en die zitten vaak ook te klooien als ze weer eens gere-direct worden naar een Nederlandse site.

En browser language op vragen is niet super ingewikkeld of zo.
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
djexplo schreef op dinsdag 08 juni 2010 @ 10:34:
[...]

En browser language op vragen is niet super ingewikkeld of zo.
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Het is wel iets ingewikkelder dan dat. In dat voorbeeld pak je alleen de eerste voorkeur.
Stel iemand (een Duitstalige die goed Nederlands beheerst) heeft als voorkeuren Duits, Nederlands, Engels en je site is in het Engels en Nederlands en je default is Engels? Dan krijgt die persoon dus de Engelse versie omdat jij Duits niet ondersteunt, terwijl de Nederlandse versie meer voorkeur verdient.

En dan zijn er ook nog verschillen tussen bv nl_NL en nl_BE of de_DE en de_CH enzo.

Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 28-08 19:32
Bedankt voor alle voorstellen, maar het script en de werking ervan zoals het nu is (op het bovenstaande probleem na) werkt zoals wij dat graag willen. Om mijn probleem iets duidelijker te maken, zal ik een voorbeeld geven:

Iemand met een Duitse browser bezoekt example.com/us/ en wordt met een 301 rewrite (.htaccess) naar example.com/ gestuurd, hij moet dus vervolgens niet met behulp van het GeoIP script nog is met een PHP header() 302 worden door gestuurd naar example.com/de/.

Bezoekt iemand met een Duitse browser example.com/ dan moet deze bezoeker met behulp van het GeoIP script verwezen worden naar example.com/de/

Met andere woorden, komt iemand binnen op example.com/us/ dan wordt deze persoon mbv .htaccess en een 301 naar example.com/ verwezen en moet het GeoIP script niet uitgevoerd worden.

Hoe kan ik in PHP controleren of iemand van example.com/us/ afkomt?

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Duitse browser bezoekt example.com/us/
...
verwezen worden naar example.com/de/
Dus.. eigenlijk zeg je hier dat een Duitse bezoeker altijd een Duitse website moet krijgen? Waarom heb je dan die /de/ nog nodig als ze toch niet kunnen kiezen welke taal ze willen?

Mocht je het toch willen dan kun je ervoor kiezen om te controleren op de /{en|de}/ pagina's ofdat de taal klopt. Wanneer dit niet zo is, dan stuur je de gebruiker terug naar /. Is dit wel zo, dan laat je gewoon de website zien. Dan zit je in het tweede geval ook niet in de knoop met de tweede redirect. Let wel op dat bij iedere pageview dit weer een nieuwe 'berekening' kost.

@Hieronder:
Om duidelijk te maken dat het forceren van een taal geen zin heeft. Beter is het om dit in je URL te laten voor de SEO natuurlijk.

[ Voor 10% gewijzigd door Feanathiel op 10-06-2010 09:38 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Waarom wil je /us uberhaupt weglaten? Je bent geen probleem aan het oplossen maar er een aan het maken, waar je nu dus tegenaan loopt. /us weglaten is niet consistent met de rest van je url's en levert je problemen op. Niet doen dus, IMO.

En het is al gezegd, maar ik zeg het nog eens: als ik mijn HTTP_ACCEPT_LANGUAGE op Nederlands heb staan dan wil ik ook als ik mijn laptop mee op vakantie neem naar China een Nederlandse site zien. "Je woont in Belgie dus krijg je een Nederlandstalige site" loopt bijvoorbeeld ook al spaak op Wallonie.

Ik zou als ik jou was iets minder het denkwerk voor mijn gebruikers gaan doen; kunnen ze goed zelf. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • reshi
  • Registratie: April 2009
  • Laatst online: 28-08 19:32
Bedankt voor alle reacties. Ik zal nog duidelijker proberen te zijn...

We hebben /us/ verwijderd voor SEO doeleinde.

We maken nu gebruik van de volgende "talen":
/UK/, /FR/, /DE/, /NL/, /TR/ en example.com voor de rest van de wereld.
De bezoeker wordt naar /uk/ frontpage verwezen aan de hand van zijn IP en ziet in de rest van de site hier en daar ook specifieke /uk/ content. Hij kan ook naar een andere taal toe mocht hij dat willen.
Komt de bezoeker uit US dan ziet hij de example.com frontpage, in de site hier en daar US specifieke content.
Komt de bezoeker bv. uit Japan en hij browsed naar example.com dan zal hij gewoon example.com zien met "Internationaal Engelse" content.

Heeft iemand zijn browsertaal op /FR/, /DE/, /NL/ of /TR/ staan dan zal hij ook naar deze pagina verwezen worden.

Dit alles gebeurd NADAT de .htaccess zijn werk heeft gedaan.
Browsed iemand naar example.com/us/ dan vind er dus eerst een 301 REWRITE PLAATS naar example.com, omdat /us/ niet meer bestaat.

Vervolgens wordt iemand aan de hand van zijn afkomst (IP ALLEEN BIJ UK, BROWSER TAAL BIJ /FR/, /DE/, /NL/ of /TR/) nog is 302 doorverwezen naar zijn desbetreffende taal. Of niet als we voor die bezoeker geen "taal" hebben.

Gaat iemand, met zijn browser in het Nederlands ingesteld, direct naar example.com/us/ dan wordt hij 301 rewritten naar example.com, vervolgens 302 rewritten naar example.com/nl/ door zijn browsertaal.
De tweede rewrite, de 302 rewrite moet dus niet plaats vinden.

Hoe kan ik met php zien waar iemand vandaan komt, zonder gebruik te maken van REFERER?

Ik hoop dat ik zo mijn probleem en de oplossing die ik zoek iets duidelijk heb uitgelegd.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 14:28

Salandur

Software Engineer

ik zie trouwens niet in waarom 2x een redirect een probleem zou zijn. De gebruiker merkt er niks van.

Alleen aan de HTTP_REFERRER kan je zien waar iemand vandaan kwam. Maar bij een redirect geven de meeste browsers de originele referrer door, niet de originele opgevraagde example.com url.

[ Voor 48% gewijzigd door Salandur op 11-06-2010 10:44 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zie geen enkele SEO-technische reden om /us weg te halen? Ik begrijp je ptobleem prima, dus die extra uitleg was wat mij betreft niet nodig geweest. Wat ik niet begrijp is waarom je het jezelf zo nodig moeilijk wil maken. Als je wil dat je domein zelf ook goed geindexeerd wordt, gebruik dan gewoon de goeie redirect: een 303 (see other) wordt anders geinterpreteerd dan een "moved permanently".

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom wil je dit automatisch doen? Veel gebruikers zullen dit als controlerend ervaren, kijk ook eens naar websites van grote bedrijven, zoals philips enzo.

Vaak krijg je dan een keuzescherm waar je kan kiezen welke taal je wilt, alternatief kan je boven of onder op de pagina kleine vlaggetjes zetten naar specifieke talen. Op die manier hoef je niet ingewikkeld te doen met redirects en geoip scripts, die uiteindelijk niet het gewenste resultaat hebben.

Acties:
  • 0 Henk 'm!

  • TheNephilim
  • Registratie: September 2005
  • Laatst online: 11:07

TheNephilim

Wtfuzzle

Ik zou inderdaad ook gewoon een keuzemenu maken, met daarin alle mogelijke talen. Opslaan in een COOKIE zodat ze niet iedere keer lastiggevallen worden met die vraag.

Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Waarom voer je die redirect uit in een htaccess? Je kunt hier gewoon een php pagina maken, een cookie schrijven dat de door de gebruiker gekozen taal US is en dan doorsturen naar de homepage. Daar kan het cookie uitgelezen worden welke meer waard is dan een ip check.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Beter lezen, hij heeft een keuzemenu. Daarbij mag je verder best defaulten naar de HTTP_ACCEPT_LANGUAGE. Defaulten naar de taal die hoort bij het land waar je je op dat moment in bevindt is echter niet handig, en dát is het punt wat meerdere mensen proberen te maken. Als jij een Chinese versie van je site maakt en ik ga in China je site bekijken, dan moet dat taalmenu wel heel verdomd duidelijk zijn wil ik iets met je site kunnen doen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 13:26

MueR

Admin Tweakers Discord

is niet lief

reshi schreef op vrijdag 11 juni 2010 @ 10:35:
We hebben /us/ verwijderd voor SEO doeleinde.
Dat is dus niet handig. Als je per taal een andere pagina serveert wil je dat ook duidelijk maken in de url. De /US sectie is per definitie niet hetzelfde als een /NL sectie. Daar staat andere content, telefoonnummers en adressen zijn anders en meer van dat spul. Het wordt helemaal gaaf als je ondanks de taal wel overal dezelfde URL structuur aan houdt. Volgens mij gaat Google er ook geen bal van begrijpen als hij vandaag op /contact/ een engelse pagina krijgt, en morgen een duitse, waar hij gisteren franse tekst had.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Joolee schreef op vrijdag 11 juni 2010 @ 12:03:
Waarom voer je die redirect uit in een htaccess? Je kunt hier gewoon een php pagina maken, een cookie schrijven dat de door de gebruiker gekozen taal US is en dan doorsturen naar de homepage. Daar kan het cookie uitgelezen worden welke meer waard is dan een ip check.
een rewrite dus? Dat kan ook, maar nog steeds moet je dat op basis van de http request doen.

Enne @Bernardo: Dat mag niet meer van de EU he ;)
Pagina: 1