我写了以下网址规则:
'<lang:(it|de|en|fr|es)>' => 'site/index',
'<lang:(it|de|en|fr|es)>/search' => 'site/search',
'<lang:(it|de|en|fr|es)>/<action:(page|logout)>/*' => 'site/<action>',
'<lang:(it|de|en|fr|es)>/<controller:\w+>' => '<controller>/index',
'<lang:(it|de|en|fr|es)>/<controller:\w+>/<action:\w+>/*' => '<controller>/<action>',
'<lang:(it|de|en|fr|es)>/<module:\w+>/<controller:\w+>/<action:\w+>/*' => '<module>/<controller>/<action>',
他们按照我的需要工作,但最后一个问题。
通过这个规则,我已经实现了以这种方式将语言附加到所有URL: www.mysite.com/it/CONTROLLER/ACTION
问题仍然存在于第一次访问时,如果用户直接在浏览器中写入网址网址,则访问www.mysite.com而不是访问www.mysite.com/userlanguage/ :(
通过这种方式,我为主页提供了3个重复的网址:
www.mysite.com
www.mysite.com/userlanguage/
www.mysite.com/index.php
我需要将所有这些重定向到www.mysite.com/userlanguage /
我需要为语言设置一个不同的单页网址。
关注.htaccess
RewriteEngine on
#LOCAL
RewriteBase /mydir/subdir/
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
# otherwise forward it to index.php
RewriteRule . /index.php
AddDefaultCharset utf-8
任何人都可以帮助我吗?谢谢
答案 0 :(得分:0)
如果您的默认控制器是站点/索引,那么您可以这样做。
public function actionIndex() {
if(!isset($_GET['lang'])){
$this->redirect(array('site/index','lang'=>'de')+$_GET); // 'de' is considered as default language
}
---
}