多语言网站mod重写问题

时间:2011-08-24 20:59:05

标签: .htaccess mod-rewrite multilingual seo

我有mod重写的问题,但在这里找不到任何解决方案。这是问题所在:

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

/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]

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

1 个答案:

答案 0 :(得分:2)

我会用:

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)。