【问题标题】:Multilanguage website mod rewrite problem多语言网站mod重写问题
【发布时间】:2011-11-03 04:12:47
【问题描述】:

我遇到了 mod rewrite 的问题,在这里没有找到任何解决方案。问题来了:

我有两种语言的网站,mod URL 应该是这样的:

/eng/contact
/srp/kontakt

/eng/news
/srp/vesti

/eng/event
/srp/najava

我的重写规则不起作用,因为我有这样的 .htacess 情况:

# news
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ news.php?lang=$1&pagename=$2 [NC,L]

# contact
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ contact.php?lang=$1&pagename=$2 [NC,L]

# event
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ event.php?lang=$1&pagename=$2 [NC,L]

我的问题是如何实现上面例子中页面的重写?

【问题讨论】:

    标签: .htaccess mod-rewrite multilingual seo


    【解决方案1】:

    我会使用:

    RewriteRule ^([^/]+)/([^/]+)/*$ index.php?lang=$1&pagename=$2&%{QUERY_STRING}
    

    然后使用一些简单的 switch-case-include 语句将 PHP 流从 index.php 路由到 news.php/contact.php 等:

    switch ($_GET['pagename'])
    {
        case 'news':
            require_once 'news.php';
            break;
        ...
        ...
    }
    

    这也将帮助您开发简化 .htaccess 文件的其他路由相关功能。这也可以轻松查找子页面的本机子页面名称,例如“en/contact”和“pl/kontakt”等。

    我几乎在所有网站上都使用这种方法(例如 http://www.calculla.com/en/ascii2hexhttp://www.calculla.com/pl/ascii2hex)。

    【讨论】:

    • 谢谢。这很有帮助,但我的情况有点复杂:www.website.com/eng/blog/category/page/1 www.website.com/srp/blog/category/page/1 这不起作用对于这种情况。
    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多