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

时间:2014-04-10 16:21:56

标签: php apache .htaccess yii-components yii2

好吧,PHP时代。

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

我得到了它并且正在运行。没问题。我通过作曲家使用了高级模板。

将我的网络根设置为/ 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 /

我在我的网络文件夹中添加了一个包含此内容的.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

我还在路线中添加了组件'urlManager'。它似乎抓住了请求并修改了它。

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

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

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

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

由于

5 个答案:

答案 0 :(得分:16)

要在Yii 2.0上创建漂亮的URL,您需要做两件事:

1:编辑/frontend/config/main.php(或您的案例中的相应主配置)并添加:

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

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

.htaccess示例:

RewriteEngine on

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

RewriteRule . index.php

答案 1 :(得分:5)

只需更改' showScriptName' => '假' to' showScriptName' =>是的,它会起作用

答案 2 :(得分:0)

如果您想使用此http://domain.com/controller_name/action_name,则只需在配置文件中启用漂亮的网址:

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

现在您可以使用网址,网址为:http://www.messages/或website.com/messages/tom。

如果你想在你的网址中使用查询字符串,这就是现在在Yii 2 website.com/message?id=12

中的工作方式

答案 3 :(得分:0)

好的,这是解决方案。

在Apache的最新版本(从2.3.9开始)中,默认情况下AllowOverride设置为NONE。以前的版本将AllowOverride设置为ALL。

Yii2假设AllowOverride将设置为ALL。

如果您想在Yii论坛阅读整个主题,请点击链接

http://www.yiiframework.com/forum/index.php/topic/53295-url-manager-for-seo-friendly-url-404-error-code/

感谢您的帮助和留言!

答案 4 :(得分:0)

对于Yii2 basic,我刚将以下代码添加到/myappfolder/config/web.php:

  

' urlManager' => [

     

'类' => ' YII \网络\ UrlManager',

     

' enablePrettyUrl' =>真,

     

' showScriptName' = GT;假,

     

另外,在/ myappfolder / web /中添加.htaccess:

  

上的RewriteEngine      

RewriteCond%{REQUEST_FILENAME}!-f

     

RewriteCond%{REQUEST_FILENAME}!-d

     

RewriteRule。的index.php

这适合我。希望这有助于其他有同样问题的人。 :)