Yii2自定义网址管理.得到400错误

Pep*_*dez 4 php apache .htaccess yii-components yii2

好吧,PHP时代.

我的客户希望我使用Yii2作为他的项目的框架.

我把它搞定了.没问题.我通过作曲家使用了高级模板.

将我的Web根目录设置为/ frontend/web等.

现在,我想使用这种网址格式

website.com/messages/或website.com/messages/tom ...等

现在的方式是设置显示website.com/index.php?r=messages/index ...

我找到了这个文件......

https://github.com/yiisoft/yii2/blob/master/docs/guide/url.md

但我似乎无法直截了当.

这是我的步骤......

我配置我的apache服务器指向/ usr/www/payroll/frontend/web /

我在我的web文件夹中添加了一个包含此内容的.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
Run Code Online (Sandbox Code Playgroud)

我还在路线中添加了组件'urlManager'.它似乎捕获请求并修改它.

'components'=>[
    'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => 'false'
        ],
],
Run Code Online (Sandbox Code Playgroud)

例如,如果我输入website.com,您可以看到它将url/site/index添加到url.(如果没有激活url组件,只需添加/index.php?site/index)

所以,显然有一个修改到url(通过UrlManager),但我得到404错误

我这里的想法已经不多了.我是Php,Apache和Yii2的新手.任何帮助,非常感谢.

谢谢

d.r*_*aev 16

要使漂亮的URL在Yii 2.0上运行,你需要做两件事:

1:编辑/frontend/config/main.php(或你的情况下适当的主配置)并添加:

'components'=>[
        'urlManager' => [
                'class' => 'yii\web\UrlManager',
                'enablePrettyUrl' => true,
                'showScriptName' => false,
            ],
    ],
Run Code Online (Sandbox Code Playgroud)

2:在您的WEB ROOT文件夹中添加.htaccess文件.在yii 2.0 advanced中,这不是项目根目录,而是: /frontend/web

.htaccess示例:

RewriteEngine on

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

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


小智 5

只需将'showScriptName'=>'false'更改为'showScriptName'=> false即可