Yii使用htaccess删除index.php会导致404错误

Yii使用htaccess删除index.php会导致404错误,php,apache,.htaccess,mod-rewrite,yii,Php,Apache,.htaccess,Mod Rewrite,Yii,我使用Yii forums/guide中提到的htaccess从我的url中删除了index.php。它在安装了Xampp的Windows PC上运行良好。但当我将其上载到y共享主机时,只有主页正在加载。所有其他链接都出现404错误 我的.Htaccess RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php 当我联系我

我使用Yii forums/guide中提到的htaccess从我的url中删除了index.php。它在安装了Xampp的Windows PC上运行良好。但当我将其上载到y共享主机时,只有主页正在加载。所有其他链接都出现404错误

我的.Htaccess

RewriteEngine On

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

RewriteRule . index.php
当我联系我的主机支持团队时,他们告诉我已启用模式_重写

我的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,
        ),
我尝试了许多解决方案,但都没有成功。请帮助我尝试重写规则/相反,请查看起始斜杠


否则路径是相对的,所以http://somedomain.com/path/ 将被重定向到http://somedomain.com/path/index.php而不是http://somedomain.com/index.php.配置文件中的Url管理器必须如下所示

        'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'rules' =>  array(
                'home' => '/site/index',
                'cms' => '/site/contentview',
                'register' => '/site/register',
                'login' => '/site/login',
            ......),
    ),
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
而.htaccess必须是这样的

        'urlManager' => array(
        'urlFormat' => 'path',
        'showScriptName' => false,
        'rules' =>  array(
                'home' => '/site/index',
                'cms' => '/site/contentview',
                'register' => '/site/register',
                'login' => '/site/login',
            ......),
    ),
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

从本地主机windows或Mac复制到服务器linux时,最常见的问题是区分大小写,请在控制器上检查您的大小写

另外,检查virtualhost定义中的AllowOverride指令

<Directory /path/to/website>
    AllowOverride All
    Require all granted
</Directory>
否则,即使启用mod_rewrite,重写规则也将无效


来源:

我遇到了同样的问题,请检查您是否遵循了控制器MyController的命名约定。控制器的第一个字母和C必须大写。

您找到解决方案了吗??我也有同样的问题