Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生产服务器上的Yii和.htaccess文件_.htaccess_Yii_Production Environment - Fatal编程技术网

生产服务器上的Yii和.htaccess文件

生产服务器上的Yii和.htaccess文件,.htaccess,yii,production-environment,.htaccess,Yii,Production Environment,我是yii新手,在生产服务器上配置.htaccess文件时遇到一些问题 在本地主机上: http://localhost/connect_donors/controllerId/functionName 应用程序位置:/www/connect\u/ yii提供的默认URL是 http://localhost/connect_donors/index.php?r=controllerId/functionName 我们使用/connect\u/protected/config/main.php

我是yii新手,在生产服务器上配置.htaccess文件时遇到一些问题

在本地主机上:

http://localhost/connect_donors/controllerId/functionName
应用程序位置:/www/connect\u/

yii提供的默认URL是

http://localhost/connect_donors/index.php?r=controllerId/functionName
我们使用/connect\u/protected/config/main.php中的urlManager来配置SEO友好的url

'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>'
然后,我使用.htaccess文件从上述URL中删除index.php

.htaccess的位置是:/connect\u/.htaccess

下面是.htaccess文件

RewriteEngine On
RewriteBase /connect_donors
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]
URL转换为:

http://localhost/connect_donors/controllerId/functionName
一切都很好,很棒

但昨天我把应用程序上传到了生产服务器上

在生产服务器上

一切都保持不变,只是我必须更改.htaccess文件

服务器上的.htaccess文件为

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]
现在打开以下url:

http://donorsconnect.com/
正确加载服务器的主页

但是,,

再次重定向到主页

注意:“配置文件”控制器上没有设置会话

class ProfileController extends CController
{
    public function actionIndex()
    {
        $this->render('index');
    }
}
我尝试了很多方法,将.htaccess文件更改为不同的代码。但是没有人帮我

任何帮助都是值得的

解决方案

我终于找到了解决办法和我所犯的错误

我的组件有一个包含baseUrl的请求数组

'components'=>array(
        ...
        'request' => array(
            'baseUrl' => 'http://donorsconnect.com',
        ...),
因此,它没有加载。我没有找到真正的原因

但在删除该“请求”数组后,其加载就可以了

检查链接,
您不应该像这样隐藏index.php,请仔细阅读:

您应该在主配置中将
showScriptName
设置为false:

'urlManager'=>array(
  .....
  'showScriptName'=>false,
  .....
),
您的.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

注意,是的,我已经这样做了,我的填充urlManager如下,'urlManager'=>array('urlFormat'=>path','showScriptName'=>false,…),这并不明显。检查你的.htaccess文件。是的,已更改,但不工作。它在本地主机上工作。但不是在生产服务器上。检查链接:和不带index.php的新链接。。如果您有baseUrl=>'',那么这可能是个问题。我遇到了这个问题,我对此进行了评论,并使用yii::app()->getBaseUrl(true)来获取baseUrl。思考问题。:)