[英]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.