Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sesje, języki a google
Forum PHP.pl > Forum > Przedszkole
robos85
robię stronę 2 językową. zmiana języka następuje po kliknięciu w link który przekazuje zmienną lang=pl (lang=en - dla angielskiej wersji).
Po kliknięciu zmieniana jest zmienna sesyjna przechowująca aktualny język, a na jej podstawie sa pobierane dane z bazy i odpowiednie pliki językowe są includowane.

Teraz pytanie: czy w takiej sytuacji google zaindeskuje oba języki? W linkach nie ma żadnej zmiennej co do języka np: strona/kontakt.php?lang=.. tylko samo kontakt.php a jak wyżej pisałem, język zmienia się po kliknięciu na flagę w specjalny link

czy np. jeżeli zmienię sesje na ciasteczka i w nich będę język trzymał to google to jakoś inaczej potraktuje?

Lub jak najlepiej zrobić 2 językowość, aby google zaindeksowało obie
mefjiu
Proponuję zrobić to na zasadzie subdomeny.
To w zależności który język jest dominujący, jeżeli polski to

polska strona www.domena.com
Niemiecka strona www.de.domena.com

co myślisz o takim rozwiązaniu ?
robos85
hmmm, tylko musze robić 2 wersje plików:/ a tego chciałem właśnie uniknąć:)
mefjiu
Dlaczego ?
robos85
a jak to inaczej rozwiązać?
mefjiu
Zobacz co wraca ci funkcja $_SERVER
robos85
http://pl2.php.net/manual/pl/reserved.variables.server.php

Sporo zwraca i nie wiem dokładnie do czego zmierzasz smile.gif
mefjiu
któraś zwraca adres aktualnej strony www czyli w twoim przypadku albo www.de.domena.com albo www.domena.com
Wiec robisz warunek jeżeli

  1. <?php
  2. if $_SERVER['ktoraj_funkcja'] == "www.de.domena.com"{
  3. //Treść niemiecka
  4.  
  5. }else{
  6. //Treść polska
  7.  
  8. }
  9. ?>
robos85
niestety opcja z subdomeną nie wchodzi w grę - klient nasz pan :/

Wie ktoś, czy mój sposób opisany w 1szym poście będzie w googleach poprawnie indeksowany?

A wie ktoś czy google obsługuje te sesje prawidłowo, tzn przy "wędrowaniu" po stronie uzywa sesji jak je wprowadzę na stronie?
barthpl
Jeżeli dobrze zrozumiałem to strona strona/kontakt.php w zależności od zmiennej sesyjnej będzie wyświetlała się po polsku lub po innemu? Jeżeli tak to zrobisz to google będzie uważało że pod jednym adresem masz dwie strony i nie za bardzo mu się to spodoba.

Ja to rozwiązuję w sposób że przy każdym adresie jest zmienna lang czyli strona strona/kontakt.php?lang=pl wyświetli się po polsku a strona strona/kontakt.php?lang=en po angielsku. Staram się aby poza stroną startową wszystkie adresy miały zdefiniowany język.

W ten sposób masz łatwy dostęp do języka
  1. <?php
  2. function getLanguage() { return isset($_GET['lang']) ? $_GET['lang']&nbsp: LANG_DEFAULT; }
  3. ?>
oczywiście wartości pl/en można zmienić na inne przydatne w procesie pozycjonowania. Potrzeba będzie trochę zmienić funkcję na taką:
  1. <?php
  2. function getLanguage()
  3. {
  4.    switch( strtolower($_GET['lang']) ) {
  5.        case "lodowka"'pl';
  6.        case "refrigerator"'en';
  7.        defaul: return LANG_DEFAULT;
  8.    }
  9. }
  10. ?>


W analogiczny sposób robisz sobie funkcję do tworzenia linków. Jeżeli do tego dołożysz jeszcze wielojęzyczne tagi stron i przyjazne linki (domena/lodowki/kontakt, domena/refrigerator/contact, pamiętaj każdy tag strony w danym języku musi być unikatowy) to daje to całkiem dobry efekt w google i przy okazji linki są nawet łatwe do zapamiętania.

Można się jeszcze pobawić i zamiast oznaczania języka strony w adresie można operować tylko na tagach strony (domena/kontakt, domena/contact) tylko tutaj więcej musisz sprawdzać przed dodaniem nowej strony (każdy tag strony w musi być unikatowy, jest to problematyczne i czasami nie naturalne bo są języki w których słowa sąidentyczne).
robos85
zrobiłem to tak:
zmienna lang definiuje język. Jeżeli w linku nie ma tej zmiennej, bądź zmienna=pl to pokazana jest treść polska, jeżeli zmienna =en to angielska.
Robię to w smarty, więc robię odpowiednie pliki dla danego języka(treść).
dany dział obsługuje 1 plik php, w którym sprawdzany jest język(zmienna lang) i includowany odpowiedni plik tpl oraz odpowiednie tabele w bazie są używane.

Problem z linkami rozwiązałem tak:
W .htaccess piszę reguły rewrite dla każdego pliku aby plik.php?lang=en przepisywał na /en/plik.php.

I tu mam pytanie, czy jest jakaś uniwersalna reguła zrobienia tego aby wszystkie adresy zawierające jako pierwszą(lub jedyną) zmienna - lang=en były pisane na /en/plik - bo teraz piszę regułę dla każdego pliku z osobna:/
np.
index.php?lang=en na /en/index.php
aktualnosci.php?lang=en&id=1 na /en/aktualnosci.php?id=1
... etc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.