我有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]
我的问题是如何在上面的例子中实现页面的重写?
答案 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/ascii2hex和http://www.calculla.com/pl/ascii2hex)。