繁体   English   中英

启用漂亮的 URLs / urlManager 完全破坏了 Yii 2 应用程序 runnikg 作为 REST 微框架

[英]Enabling pretty URLs / urlManager completely breaks Yii 2 application runnikg as a REST micro-framework

tl; dr My Yii 2 应用程序, 作为微框架运行,在使用标准(“不漂亮”)URL 时工作得很好。 但是,当在配置中启用urlManager应用程序组件时,整个应用程序会完全中断,并且每次调用它都会以 404 结束。


我的另一个问题之后,我正在尝试运行 Yii 2 应用程序的极简版本(微框架)来充当 RESTful 端点。 我已按照指南进行操作,当我调用标准(“不漂亮”)URL 时,一切似乎都正常:

在此处输入图像描述

正如指南中所建议的,我在我的应用程序中启用了路由/漂亮的 URL

'urlManager' => [
    'enablePrettyUrl' => true,
    'enableStrictParsing' => true,
    'showScriptName' => false,
    'rules' => [
        ['class' => 'yii\rest\UrlRule', 'controller' => 'post'],
    ],
]

突然我的应用程序完全停止工作了。 它既不漂亮:

在此处输入图像描述

也不是漂亮的网址:

在此处输入图像描述

它甚至无法为默认控制器和操作提供服务—— site/index

我错过了什么?

看来我拥有我需要的一切。 按照我的指南

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

为了使整个工作正常进行,我还必须做什么,或者我在这里缺少什么? 谢谢!

删除这一行:

'enableStrictParsing' => true,

这个问题来自一个误解。 我不知道当启用漂亮的 URL 时, yii\rest\UrlRule::$pluralize默认设置为true 这意味着请求必须是:

http://localhost/micro-app/posts

(复数控制器名称;注意末尾的“s”)

不是:

http://localhost/micro-app/post

(单数控制器名称)

当启用漂亮的 URL 时,常规 URL 不再起作用也是完全正常的。 这就是启用漂亮 URL 时在http://localhost/micro-app/index.php?r=post URL 上获取404 File Not Found的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM