问题
最初的问题:
您好我有一个新创建的 Yii 站点,我想从 URL 中删除 index.php。
示例:“/index.php/site/index”应该是“/site/index”
我一直在使用这个http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x指南,但我只收到 404。
我希望你能指出错误或帮助我调试这个问题!
如果我遗漏了任何相关信息,请告诉我。
OBS:“主页”按预期工作,其他页面已损坏。
问题状态: 似乎是 mod_rewrite.so 的 apache/ubuntu 问题
回答
在不同人的帮助下,现在一切正常:DI 必须安装“rewrit”才能运行,我通过编写 Running a2enmod rewrit 来做到这一点 我系统的以下配置为我解决了这个问题,我希望这个线程可以帮助其他人类似的问题。
我的系统
Server version: Apache/2.2.22 (Ubuntu)
Server built: Nov 8 2012 21:37:45
Apache httpd.conf
<Directory "/var/www/MY_SITE/FOLDER_CONTAINING_YII/">
AllowOverride All
#...
</Directory>
LoadModule rewrite_module modules/mod_rewrite.so
这是文件的全部内容
Apache 错误日志
File does not exist: /.../htdocs/site, referer: http://.../htdocs/index.php/site/index
我加了点
重启阿帕奇
kah@webaalborg:/etc/apache2/sites-available$ sudo service apache2 restart
* Restarting web server apache2
[Mon Nov 26 20:16:35 2012] [warn] module rewrite_module is already loaded, skipping
... waiting
[Mon Nov 26 20:16:36 2012] [warn] module rewrite_module is already loaded, skipping
[ OK ]
/ect/apache2/available-sites/default
...
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Directory /var/www/MY_SITE>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
...
Yii 目录结构:
- 框架
- 文档
- 资产
- css
- .htaccess
- 索引.php
- 索引-test.php
- 主题
- 受保护
.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
main.php 配置文件
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
'rules'=>array(
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
),
),