2

私は、さまざまなトップ レベル ドメインからアクセスする必要があるさまざまなモジュールで構成される Yii を使用して Web サイトを作成しています。そのため、すべてのベースがモジュールに依存する必要があります。さらに、国コードも確認し、get パラメータとして送信する必要があります。このようなもの:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.micrositedomain\.com$
RewriteRule ^(.*)$   http://bigsite.com/microsite/$1?lang=en [QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.micrositedomain\.es$
RewriteRule ^(.*)$   http://bigsite.com/microsite/$1?lang=es [QSA]

RewriteCond %{HTTP_HOST} ^([^.]+)\.micrositedomain2\.com$
RewriteRule ^(.*)$   http://bigsite.com/microsite2/$1?lang=en [QSA]
RewriteCond %{HTTP_HOST} ^([^.]+)\.micrositedomain2\.es$
RewriteRule ^(.*)$   http://bigsite.com/microsite2/$1?lang=es [QSA]

ただし、これをどこで処理するかはよくわかりません。明らかにルートの .htaccess にあるはずですが、既にそこにある .htaccess と混合する方法がわかりません:

RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

また、私のホスティング管理者は、各ドメイン (www.micrositedomain.com、www.micrositedomain2.com...) を各モジュールではなく bigsite.com ルートに向けるべきだと確信していますが、それを保証することはできません。

それを達成するには、どの段階に従う必要がありますか?

tl;dr

お急ぎの方へ:

  • 異なるドメイン/国コードの URL を 1 つのドメインに書き換え、それらのパラメーターを渡します。
  • ドメインが指す場所をホスティング管理者に伝えてください。

私の状況でこれをどのように解決しますか?

4

1 に答える 1

2

.htaccess で作成する方法がわかりませんが、yii config で作成できます。このようなことを試してください

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'rules'=>array(
        'http://<module:\w+>\.<domain:(micrositedomain|microdomain2)>\.<zone:(com|es)>/<controller>/<action>'=>'<module>/<controller>/<action>', 

その後、いくつかの MyController.php をコンポーネント フォルダーに配置する必要があります。

class MYController extends CController
{
    public $domain='micrositedomain';
    public $language='en';

    public function init() {
        if(isset($_GET['zone']))
        {
            $this->language=($_GET['zone']=='com')?'en':$_GET['zone'];
        }
        if(isset($_GET['domain']))
        {
            $this->domain=$_GET['domain'];
        }
    }
}

すべてのコントローラーはこれを拡張する必要があります。

すべてのドメインは、アプリケーションでディレクトリを指す必要があります

于 2013-02-08T12:34:44.003 に答える