apache Yii2自定义网址管理.获取400错误

yvgpqqbh  于 2023-02-16  发布在  Apache
关注(0)|答案(5)|浏览(142)

嗯,PHP时代。
我的客户希望我使用Yii 2作为他项目的框架。
我启动并运行了它。没问题。我通过 composer 使用了高级模板。
将我的Web根目录设置为/frontend/web等。
现在,我想使用此网址格式

网站.com/信息/或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

我还按照说明添加了组件“urlManager”,它似乎可以捕获请求并对其进行修改。

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

例如,如果我输入website.com,你可以看到它会在url中添加/site/index(如果url组件没有激活,它只会添加/index.php?site/index)
所以,显然有一个修改performed网址(通过UrlManager),但我得到404错误
我在这里已经没有什么想法了。我是Php,Apache和yii 2的新手。任何帮助,非常感谢。
谢谢

s2j5cfk0

s2j5cfk01#

要在Yii 2.0上创建漂亮的URL,你需要做两件事:
1:编辑/frontend/config/main.php(或者根据您的情况编辑相应的主配置)并添加:

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

2:在YOUR WEB ROOT文件夹中添加一个.htaccess文件。在yii 2.0高级版中,这是而不是项目根目录,而是:/frontend/web
.htaccess示例:

RewriteEngine on

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

RewriteRule . index.php
8wtpewkr

8wtpewkr2#

只需将“showScriptName”=〉“false”更改为“showScriptName”=〉false,它就可以正常工作

ncecgwcz

ncecgwcz3#

好了,解决办法是这样的。
在Apache的最新版本(从2.3.9开始)中,AllowOverride默认设置为NONE。以前的版本将AllowOverride设置为ALL。
Yii 2假设AllowOverride将被设置为ALL。
如果你想阅读Yii论坛上的整个帖子,这里有链接
http://www.yiiframework.com/forum/index.php/topic/53295-url-manager-for-seo-friendly-url-404-error-code/
感谢您的帮助和留言!

wlp8pajw

wlp8pajw4#

对于Yii2 basic,我只是将下面的代码添加到/myappfolder/config/web.php:
'网址管理器'=〉[
'类'=〉'yii\网页\网址管理器',
'启用漂亮URL'=〉真,
"显示脚本名称"=〉错误,
]
此外,还在/myappfolder/web/中添加了. htaccess:
重写引擎打开
重写条件% {请求文件名}! -f
重写条件% {请求文件名}! -d
重写规则. index.php
这对我很有效。希望这能帮助其他有同样问题的人。:)

rxztt3cl

rxztt3cl5#

如果你想像这样使用http://domain.com/controller_name/action_name,你只需要在你的配置文件中启用漂亮的url:

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

现在你可以随意使用网址'website.com/messages/或website.com/messages/tom。
如果你想在你的网址中使用查询字符串,这是Yii 2 website.com/message?id=12的工作方式

相关问题