3

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

在本地主机上:

申请地点: /www/connect_donors/

yii 提供的默认 URL 是,

http://localhost/connect_donors/index.php?r=controllerId/functionName

我们使用 /connect_donors/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>'

现在有效的 URL 是

http://localhost/connect_donors/index.php/controllerId/functionName

然后我使用 .htaccess 文件从上面的 URL 中删除 index.php。

.htaccess 的位置是:/connect_donors/.htaccess

以下是 .htaccess 文件,

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

网址改成:

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]

现在是以下网址:

http://donorsconnect.com/

正确加载服务器的主页。

但是, http://donorsconnect.com/profile

再次重定向到主页。

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

class ProfileController extends CController
{
    public function actionIndex()
    {
        $this->render('index');
    }
}

我尝试了很多东西,将 .htaccess 文件更改为不同的代码。但没有人帮助我。

任何帮助都是可观的。

解决方案

我终于得到了解决方案和我所犯的错误。

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

'components'=>array(
        ...
        'request' => array(
            'baseUrl' => 'http://donorsconnect.com',
        ...),

由于这个原因,它没有加载。我没有找到真正的原因。

但是在删除那个“请求”数组之后,它的加载很好。

检查链接, http://donorsconnect.com/profile

4

1 回答 1

2

你不应该像这样隐藏 index.php,仔细阅读:http ://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x

您应该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
于 2013-04-11T06:37:26.600 回答