优化URL路由器行为

时间:2011-12-10 20:45:40

标签: php url seo router

我正在尝试创建一个URL路由器,其中网站语言由域中的前两个字符定义。示例:domain.com/en(该网站将以英语显示内容)。

以下脚本是我到目前为止所提出的。重点是功能,而不是SEO。但是我希望它能够针对两者进行优化,老实说,我不是搜索引擎优化方面的专家。

  • Googlebot能否将英语和丹麦语内容编入索引? (注意我获取访问者语言的方式,并相应地进行重定向)
  • 我有什么办法可以改进脚本功能,包括SEO处理吗?

所有改进建议都非常受欢迎..

提前致谢!

    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;
    }
}

0 个答案:

没有答案