Yii使用htaccess删除index.php给了我404错误

时间:2013-12-07 09:16:45

标签: php apache .htaccess mod-rewrite yii

我使用htaccess从我的网址中删除了index.php,如Yii forums / guide中所述。它在我的Windows PC上安装了Xampp正常工作。但是当我将它上传到y共享主机时只有主页正在加载。所有其他链接都出现404错误。

我的.Htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

当我联系我的托管支持团队时,他们告诉我们启用了mode_rewrite。

我的main.config内容是

'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',

                'gii' => 'gii/<controller>',

                'admin' => 'admin/default/index',
                'admin/<controller:\w+>' => 'admin/<controller>',
                'admin/<controller:\w+>/<action:\w+>/<id:\d+>'=>'admin/<controller>/<action>',
                'admin/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>',

                'gii' => 'gii/default/index',
                'gii/<controller:\w+>' => 'gii/<controller>',
                'gii/<controller:\w+>/<action:\w+>/<id:\d+>'=>'gii/<controller>/<action>',
                'gii/<controller:\w+>/<action:\w+>'=>'gii/<controller>/<action>',


            ),
            'showScriptName'=>false,
        ),

我尝试了很多解决方案,但都是徒劳的。请帮忙

4 个答案:

答案 0 :(得分:0)

请尝试RewriteRule . /index.php,观看起始斜杠。

否则路径是相对路径,因此http://somedomain.com/path/会重定向到http://somedomain.com/path/index.php,而不是http://somedomain.com/index.php

答案 1 :(得分:0)

配置文件中的url管理器必须像这样

        'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'rules' =>  array(
                'home' => '/site/index',
                'cms' => '/site/contentview',
                'register' => '/site/register',
                'login' => '/site/login',
            ......),
    ),

.htaccess必须像这样

Options +FollowSymLinks
IndexIgnore */*
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

答案 2 :(得分:0)

从localhost(Windows或Mac)复制到服务器(linux)时最常见的问题是区分大小写,请检查控制器上的情况。

另外,检查虚拟主机定义中的AllowOverride指令。

<Directory /path/to/website>
    AllowOverride All
    Require all granted
</Directory>

否则,即使启用mod_rewrite,重写规则也不起作用。

来源:http://www.yiiframework.com/forum/index.php/topic/30739-404-errors-on-apache2-ubuntu/page__p__148021__hl__404+error#entry148021

答案 3 :(得分:0)

我遇到了同样的问题,请检查您是否遵循控制器的命名约定 M y C ontroller第一个lettre和控制器的“C”必须是大写。