簡體   English   中英

Yii使用htaccess刪除index.php給我404錯誤

[英]Yii removing index.php using htaccess gives me 404 error

如Yii論壇/指南中所述,我使用htaccess從url中刪除了index.php。它在裝有Xampp的Windows PC上運行良好,但是當我將其上傳到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,
        ),

我嘗試了許多解決方案,但都徒勞無功。請幫助

嘗試RewriteRule . /index.php RewriteRule . /index.php ,請注意起始斜杠。

否則,該路徑是相對的,所以http://somedomain.com/path/將被重定向到http://somedomain.com/path/index.php ,而不是http://somedomain.com/index.php

配置文件中的網址管理器必須是這樣的

        '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

從本地主機(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

我經歷了同樣的問題,請檢查您是否遵循了控制器M Yçontroller第一的Lettre且必須是大寫控制器的“C”的命名約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM