Yii中的用户友好URL

Fal*_*ion 5 .htaccess yii

我一直在和Yii做一些实验,看它是否适合我的需要.我想要启用的第一件事是用户友好的URL.

我想要实现的目标:从此URL webapproot/index.php?r=site/contact转到此URL webapproot/contact.

我做了什么:

  • 使用Yiic(php YiiRoot/framework/yiic.php webapp testdrive)创建应用程序
  • 按照Yii的文档("用户友好的URL"和"隐藏index.php")中此链接的步骤2和6进行操作.

会发生什么事情,我一直得到404.任何关于我做错了什么的想法?

以下是这个问题的一些相关摘录:

[project root] /protected/config/main.php

(...)
'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName'=>false,
    'rules'=>array(
        '<controller:\w+>/<id:\d+>'=>'<controller>/view',
        '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
        '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
    ),
),
(...)
Run Code Online (Sandbox Code Playgroud)

[项目根目录]/.htaccess

RewriteEngine on

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

RewriteRule . index.php
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/httpd.conf

(...)
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
(...)
<Directory [path to my web projects folder]>
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
</Directory>
(...)
Run Code Online (Sandbox Code Playgroud)

boo*_*dev 3

从您最新的评论来看,您似乎还需要设置RewriteBase 。正如我在对您的问题的第一条评论中提到的,如果您的网络服务器的 DocumentRoot 和您的网络应用程序位于不同的文件夹中,那么可能会出现此问题。尝试这个:

RewriteEngine on

RewriteBase /~username/yourwebappfolder
#rest of your rewrite conditions/rules
Run Code Online (Sandbox Code Playgroud)

要调试 htaccess 或其他服务器配置,请检查服务器 error_log,对于 mac lion,它位于文件中:/var/log/apache2/error_log