0

我正在尝试重写 yii url,但没有运气。我花了几个小时浏览网站,每次都得出相同的答案,这对我不起作用:

http://www.yiiframework.com/doc/guide/1.1/en/topics.url#user-friendly-urls

我想将网址解析为基本路径,例如

/index.php/site/index 到 /

/index.php/ads 和 /index.php/ads/ 到 /ads

/ads/details?ad=9 到 /ads/9

问题似乎是 .htaccess 没有效果。

我在用:

mamp pro 在带有 lion 的 mac 上,并且web 目录与 webserver root 不同。我已经通过控制台设置了 AllowOveride 。

.htaccess 与主 index.php 位于同一文件夹中,但即使我创建错误也不会注册。

我对使用 htaccess 文件的其他非 yii web 目录没有任何问题

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /index.php

//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>',
        ),
    ),
4

1 回答 1

2

我有一个项目,我的 Yii 应用程序也在一个子文件夹中。

这是我的 .htaccess 文件:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

然后在 main.php 中,您需要将这些行添加到“规则”数组中:

'' => 'site/index', // This is for the home page

广告是您控制器的名称吗?换句话说,您的控制器文件夹中有一个名为 AdsController.php 的文件吗?如果是这样,那么它将默认工作。

只是好奇你为什么直接点击 index.php ?你应该能够设置你的 localhost 直接指向你的 Yii 应用程序文件夹。例如,在我的机器上,我创建了 http://mytestapp/,它指向 htdocs 中的应用程序文件夹。

由于您使用的是 Mac,因此您还需要编辑 etc/hosts 文件...

我添加了这样一行:127.0.0.1 mytestapp

希望有帮助...

于 2012-08-30T20:05:05.420 回答