问题描述
我的 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