网址未在实时服务器上解析,在本地工作正常

时间:2014-01-05 08:54:53

标签: php yii

我的网站在localhost上工作得很好,一切都很顺利。当我将它上传到实时服务器时,它只能再次工作,除了一个控制器(UserPersonalityController.php) 除了一个控制器外,所有控制器都完美地解析和解析。 在你回答之前让我告诉你   - 我的控制器已上传(不丢失)   - 我已通过更改路线进行检查,但无法解析UserPersonalityController。

'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'caseSensitive' => false,
        'rules' => array(
            'signup' => 'Credentials/create',
            'signup/<id:\d+>' => 'User/create',

            'signup/lookingfor/<id:\d+>' => 'lookingfor/create',
            'signup/personality/<id:\w+>' => 'UserPersonality/create',
           //checked by commenting above line, still problem occurs
            'people' => 'credentials/index',
            'people/*' => 'Credentials/index',
....

你知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

要使Url Management正常工作,首先apache必须将url传递给yii,然后yii才能运行相应的控制器/操作。通常,apache会将这些URL作为目录处理,并尝试在这些位置查找相应的文件 您可以像这样创建.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

注意:为此,您需要在apache配置中启用重写引擎 您可以使用以下命令集执行此操作 要使用mod_rewrite,您可以在终端中键入以下命令:

a2enmod rewrite

之后重启apache2
/etc/init.d/apache2 restart

service apache2 restart // (Ubuntu/Debian) 

答案 1 :(得分:1)

我现在回答我的问题。因为我已经遇到了几天的问题。我的本地是在Windows中,文件和目录不区分大小写,这就是为什么它工作得很好。当我将我的站点上传到服务器(linux)时,它将所有文件名和目录视为区分大小写。

因为在app中配置了url manager,所以控制器 UserPersonalityController UserpersonalityController 不同。

'urlManager' => array(
    'urlFormat' => 'path',
    'showScriptName' => false,
    'caseSensitive' => false, //

问题的简单解决方案是保留控制器的小写名称。

UserPersonalityController.php
UserpersonalityController.php 
//Both above files are treated as completely different ones on linux while on windows
//they are same files.

注意永远不要将控制器名称之间的任何字母大写。控制器的首字母和字母 C 必须是大写字母。在这之间永远不要保留任何字母资本,因为你可能会遇到问题。可能还有其他解决方案。但我已经通过将文件名更改为小写来解决。

进一步阅读:http://www.yiiframework.com/forum/index.php/topic/651-controller-file-name-case-sensitive/