【问题标题】:Yii urlmanager, append language on homepageYii urlmanager,在主页附加语言
【发布时间】:2013-12-14 19:15:26
【问题描述】:

我写了以下网址规则:

            '<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

谁能帮帮我?谢谢

【问题讨论】:

标签: yii url-rewriting


【解决方案1】:

如果您的默认控制器是站点/索引,那么您可以这样做。

 public function actionIndex() {
        if(!isset($_GET['lang'])){
            $this->redirect(array('site/index','lang'=>'de')+$_GET); // 'de' is considered as default language
        }
        ---
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    相关资源
    最近更新 更多