0

最近、複数のモジュールで Yii プロジェクトを実行している実稼働サーバーを再インストールしました。ルーティング部分は、再インストール前にうまく機能していました。問題がないか Nginx の構成を数回確認しましたが、すべて問題ないように見え、実際には古いサーバーから動作中の構成をコピーしました。

問題は、(任意のサブドメインでの) すべてのリクエストが CHttpException:Unable to resolve the request "default/site/index".コントローラーなどを呼び出した場合でも発生することです。

テスト用に新しいサブドメイン(ルールが指定されていないもの)を開きましたが、それもこのエラーにリダイレクトされました。(最後の2つのルールなしで試してみました)

Yii には次のルーティング規則があります: (print_r の結果)

[http://www.domain.dk/<controller:\w+>/<action:\w+>/<wid:\w+>] => default/<controller>/<action>
[http://www.domain.dk/<controller:\w+>/<action:\w+>] => default/<controller>/<action>
[http://www.domain.dk/] => default/site/index
[http://api.domain.dk/<controller:\w+>/<action:\w+>/<wid:\w+>] => api/<controller>/<action>
[http://api.domain.dk/<controller:\w+>/<action:\w+>] => api/<controller>/<action>
[http://api.domain.dk/] => api/
[http://admin.domain.dk/<controller:\w+>/<action:\w+>/<wid:\w+>] => admin/<controller>/<action>
[http://admin.domain.dk/<controller:\w+>/<action:\w+>] => admin/<controller>/<action>
[http://admin.domain.dk/] => admin/site/index
[https://facebook.domain.dk/<controller:\w+>/<action:\w+>/<wid:\w+>] => facebook/<controller>/<action>
[https://facebook.domain.dk/<controller:\w+>/<action:\w+>] => facebook/<controller>/<action>
[https://facebook.domain.dk/] => facebook/site/index
[http://domain.dk/site/page/view/<view:\w+>/] => default/site/page
[http://<module:\w+>.domain.dk/<controller:\w+>/<action:\w+>/<wid:\w+>] => <module>/<controller>/<action>
[http://<module:\w+>.domain.dk/<controller:\w+>/<action:\w+>] => <module>/<controller>/<action>

すべての Nginx 構成は次のようになります。

server {
        listen 80;
        server_name api.domain.dk;

        access_log /log/api.domain.dk_access.log;
        error_log /log/api.domain.dk_error.log;

        root /path.to.project/public_html;

        include yii-rules.conf;
}

ファイルには次のyii-rules.confような一般的なルールがあります: (私は違いを生むものだけをコピーします)

charset utf-8;

index index.php;

location / {
        index  index.html index.php;
        try_files $uri $uri/ /index.php?$args;

        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}

location ~ \.php {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        #let yii catch the calls to unexising PHP files
        set $fsn /index.php;
        if (-f $document_root$fastcgi_script_name){
                set $fsn $fastcgi_script_name;
        }

        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;
}

このエラーの原因となる可能性のあるアイデアが不足しています。おそらく、私たちが気付いていない小さな問題です :\

このエラーはログに何も生成せず (もちろんアクセス ログのみ)、yii のアクセス ログは書き込みのみで、ブラウザに表示される内容は「解決できません...」です。

このエラーを回避するには、構成またはルール リストをどのように変更すればよいですか?

4

1 に答える 1