使用 YII2 的 URL 后缀管理导致错误

问题描述

我的 YII2 项目遇到了一个问题。我在规则中添加了 URL 后缀,它抛出了 404 错误。我不知道为什么我面临这个问题。让我分享我的网址管理器规则

 'urlManager' => [
        'enablePrettyUrl' => true,'showScriptName' => false,'suffix' => '.html','rules' => [
            'login'=>'userportal/default/login',],

如果我删除后缀或注释该行,我的 Web 应用程序将运行良好。但是,如果使用此代码,Web 应用程序会抛出 404 错误。

我在我的本地主机上使用 xampp 和 apache 服务器。

web 文件夹中的 .htaccess 如下所示

RewriteEngine on
RewriteRule ^index.php/ - [L,R=404]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

告诉我哪里出了问题?

谢谢

解决方法

试试这个:(工作解决方案)

基本应用

config/web.php

'urlManager' => [
            'enablePrettyUrl' => true,'showScriptName' => false,'suffix' => '.html','rules' => [
                '<action:\w+>' => 'site/<action>','<action:\w+>/<id:\d+>' => 'site/<action>/<id>',],

app/web/.htaccess

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

要访问您的操作,您只需使用 login.html,它将呈现 site/login 操作。为了能够正确呈现您的网址,请像这样使用 Url 助手:

Url::toRoute('site/login')

它将使用所需的扩展名生成正确的链接:

login.html

还有这里的文档,其中包含有关如何在 yii2 应用程序中管理 url 的更多技巧。Routing and URL Creation

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...