如何在没有根路径的Yii中使用漂亮的URL?

时间:2015-04-07 03:22:34

标签: php yii url-routing yii2

我根据文档

打开了Yii中的漂亮网址

http://www.yiiframework.com/doc-2.0/guide-runtime-routing.html

并且主页可见,但是当我尝试转到另一个网址时,它会给我一个错误。

http://localhost:81/xxx/web/shopping/search?q=toaster

  

在此服务器上找不到请求的URL / xxx / web / shopping / search。

我尝试创建一个通用规则,但它没有帮助。

    'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'enableStrictParsing' => false,
        'rules' => [
          // ...
          '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ],
    ],

文档明确指出不要在路径中包含子文件夹。

  

注意:具有服务器名称的规则不应在其模式中包含条目脚本的子文件夹。例如,如果应用程序位于http://www.example.com/sandbox/blog下,那么您应该使用模式http://www.example.com/posts而不是http://www.example.com/sandbox/blog/posts。这将允许您的应用程序部署在任何目录下,而无需更改您的应用程序代码。

我必须明确列出每一条路线吗?我试图为

提供明确的路线
'shopping/search' => 'shopping/search',

但它没有帮助。

2 个答案:

答案 0 :(得分:0)

试试这个

    'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => 'false'
    ],

答案 1 :(得分:-1)

这是因为Apache。在没有指向index.php的情况下,Apache并不知道发送请求的位置,而是发出错误的请求。这将默认为index.php

# For pretty URLs
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

https://komarashettynageshrao.wordpress.com/2010/02/04/pretty-urls-in-yii/