如何在 yii2 中获取干净的 url,如 ``post/100``
How to get clean urls in yii2 like ``post/100``
我引用的是指南:
根据 urlManager 配置,创建的 URL 可能类似于以下之一(或其他格式)。而如果后面请求创建的URL,还是会解析回原来的路由和查询参数值
/index.php?r=post/view&id=100
/index.php/post/100
/posts/100
我对第三个选项或没有 index.php 的第二个选项感兴趣。但是我怎样才能得到它呢?
我有 .htaccess 正在删除 index.php(我可能需要 nginx 的一些东西,但不知道是什么以及如何,我从未使用过它)。
我有漂亮的 url 设置:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
下一步是什么?
我在 yii2 论坛上问过 the same question,但没有人回答:(
您无需为此目的更改 .htaccess
或 Nginx
中的任何内容。
index.php
已使用该设置删除:
'showScriptName' => false,
该行已启用漂亮的网址:
'enablePrettyUrl' => true,
这意味着像 ?r=post/view
这样的 url 不会被生成。
唯一剩下的就是配置rules
。
如果我们有 PostController
及其操作 view
和 id
作为主键,没有 index.php
的第二个选项将是:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'post/<id:\d+>' => 'post/view',
],
],
对于第三个选项,只需在规则的左侧部分添加 s
:
'posts/<id:\d+>' => 'post/view',
官方文档涵盖了 here。
为了删除 /web 前缀,您需要将您的网络服务器指向此子目录而不是项目根目录
我引用的是指南:
根据 urlManager 配置,创建的 URL 可能类似于以下之一(或其他格式)。而如果后面请求创建的URL,还是会解析回原来的路由和查询参数值
/index.php?r=post/view&id=100
/index.php/post/100
/posts/100
我对第三个选项或没有 index.php 的第二个选项感兴趣。但是我怎样才能得到它呢? 我有 .htaccess 正在删除 index.php(我可能需要 nginx 的一些东西,但不知道是什么以及如何,我从未使用过它)。 我有漂亮的 url 设置:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
下一步是什么?
我在 yii2 论坛上问过 the same question,但没有人回答:(
您无需为此目的更改 .htaccess
或 Nginx
中的任何内容。
index.php
已使用该设置删除:
'showScriptName' => false,
该行已启用漂亮的网址:
'enablePrettyUrl' => true,
这意味着像 ?r=post/view
这样的 url 不会被生成。
唯一剩下的就是配置rules
。
如果我们有 PostController
及其操作 view
和 id
作为主键,没有 index.php
的第二个选项将是:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'post/<id:\d+>' => 'post/view',
],
],
对于第三个选项,只需在规则的左侧部分添加 s
:
'posts/<id:\d+>' => 'post/view',
官方文档涵盖了 here。
为了删除 /web 前缀,您需要将您的网络服务器指向此子目录而不是项目根目录