【问题标题】:URL alias based on language in PHPPHP中基于语言的URL别名
【发布时间】:2012-01-29 23:58:24
【问题描述】:

我创建了一个多语言酒店网站。 URL 如下所示:

www.blahblah.com/apartments.php?lang=en

我现在想要的是另一种语言,比如德语,具有以下 URL。:

www.blahblah.com/somethingElseHere.php?lang=de

我想要那个,以帮助我的网站 SEO。

我想我必须使用 URL 别名,但我不知道如何开始。

有什么想法吗?

【问题讨论】:

    标签: php url seo alias


    【解决方案1】:

    你必须像这样写一段代码:

    session_start();
    if (!isset($_SESSION['lang'])){
        $_SESSION['lang'] = "de";
        header("location:index.php?lang=de");
    }
    
    if (isset ($_GET["lang"]) && ($_GET["lang"]=="de" || $_GET["lang"]=="en"))
    {
        $_SESSION["lang"]=$_GET["lang"]; 
    }
    
    function ln () {
        if ($_SESSION["lang"]=="de"){return false;};
        if ($_SESSION["lang"]=="en"){return true;};
    }
    
    function lang(){
        return $_SESSION["lang"];
    }
    
    function mk_link(){
        $return='';
        $except=func_get_args();
        foreach ($_GET as $key=>$value) if (!in_array($key,$except) && $value!='') $return.='&'.$key.'='.$value;
        return $return;
    }
    

    然后在您的网站中,您将不得不像这样使用它:

    <?php echo ln()?"Home":"Nach Haus;";?>
    

    尽管如此,这是一种粗略的方法,您还必须过滤 GET 变量以确保它们安全。

    但是我强烈推荐一个框架,比如 cake、codeigniter 或其他对你有用的东西。

    【讨论】:

    • 正如@Michal 所说,如果你的 URL 有一个非常结构化的形式,你可以使用 mod_rewrite
    • Actuall @mugur 你的建议对他没有帮助,因为他需要的是在 URL 中区分网站的语言版本......如果你限制 URL 中语言切换的存在那么它可能会适得其反……至少在我看来,你不觉得吗?
    • 我同意,但实际上他正在使用 GET 变量来更改语言,因此他将区分语言。当然 mode_rewrite 更优雅:)
    • 啊,抱歉,在你的脚本中遗漏了一些东西......根据语言重命名链接的好主意...... + 添加 mod_rewrite 到它,完美...... :)
    【解决方案2】:

    您可以在 .htaccess 文件中使用 mod_rewrite 来使“www.yourdomain.com/german.html”之类的 URL 指向相应的 index.php?lang=de。

    类似:

    RewriteEngine on
    RewriteRule ^german\.html$ /index.php?lang=de
    

    你可以用 mod_rewrite 做很多事情。在这里查看更多信息http://httpd.apache.org/docs/current/mod/mod_rewrite.html

    【讨论】:

    • 我正在我的本地主机localhost/Dropbox/theoxenia/index.php?lang=de 上尝试您的解决方案,但我不工作。当我刷新时,我得到相同的 url。不用找了!有什么想法吗?
    • 上面的例子很短。它只应该“无形地”重定向用户。因此,当您打开whatever/german.html 时,您会得到与打开whatever/index.php?lang=de 一样的结果,但在地址栏中您仍然会看到what/german.html。但是,这当然不是您所有问题的完整解决方案:) 它应该可以工作,我在我的服务器上使用相同的代码并且它可以工作......因为我注意到在您的链接中您使用 localhost,我建议您验证您的本地服务器是否支持此方法?
    猜你喜欢
    • 1970-01-01
    • 2011-08-23
    • 2018-03-20
    • 2012-03-21
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多