Оптимизация URL-адресов поведение маршрутизатора


Я пытаюсь создать URL-адрес-маршрутизатора, где язык сайта определяется на первых двух символов в домене.

Пример:

domain.com/en

(затем сайт будет отображать контент на английском языке).

Ниже скрипт, что я придумал до сих пор. Акцент делается на функциональность, а не СЕО. Однако, я хотел бы, чтобы это было оптимизировано для обоих, и честно говоря я не специалист по поисковой оптимизации.

  • Бы робот сможет проиндексировать как английский и датский контент? (заметили, кстати я вам посетителях язык, и сделать редиректы соответственно)
  • Есть все, что я мог сделать, чтобы улучшить функциональность скрипта, включая обработку СЕО?

Все предложения по улучшению приветствуются.

class Router {
    private $allowedLang = array('da', 'en');
    private $langRouter = array(
        'en' => 'en_US',
        'da' => 'da_DK'
    );

    function __construct() {
        $locale = in_array($_GET['locale'], $this->allowedLang);

        if ($locale) {
            // If get-var locale is allowed, set it as session
            $_SESSION['language'] = $_GET['locale'];
        }
        if (empty($_SESSION['language'])) {
            // If session isn't set, use visitor's browser language
            $_SESSION['language'] = $this->getLanguage();
        }

        // Only redirect if get-var locale is empty or isn't allowed, and target file is not located in lib folder (ajax files etc.)
        if ((empty($_GET['locale']) || !$locale) && substr($_SERVER['SCRIPT_NAME'], 0, 4) != '/lib') {
            header('Location: /'.$_SESSION['language']);
        }

        $this->setLanguage($_SESSION['language']);
    }

    public function setLanguage($lang) {
        // If $lang is allowed use it, else default to DEFAULT_LANGUAGE
        $locale = (in_array($lang, $this->allowedLang) ? $this->langRouter[$lang] : DEFAULT_LANGUAGE);

        // Initiate gettext
        putenv("LC_ALL=$locale");
        setlocale(LC_ALL, $locale);
        bindtextdomain("messages", CLIENT_PATH."/lib/locale");
        textdomain("messages");
    }

    /**
     * Get the visitor's language based on browser settings.
     * If language isn't found or isn't allowed, default to DEFAULT_LANGUAGE
     */
    private function getLanguage() {
        if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            $langs = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
            foreach ($langs as $value) {
                $choice = substr($value, 0, 2);
                if (in_array($choice, $this->allowedLang)) {
                    return $choice;
                }
            }
        }
        return DEFAULT_LANGUAGE;
    }
}


232
1
задан 11 декабря 2011 в 01:12 Источник Поделиться
Комментарии