路由部分的 Yii2 规则
Yii2 rules in routing section
我是 Yii2 的新手,目前,我在设置应用程序时遇到错误。
我尝试使用友好的URL。
根据 DOCS
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
//... rules ...
]
]
我在我的应用程序中将此部分设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
当我尝试打开 URL http://yii2/entry 时,这工作正常。
如果我设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 URL http://yii2/site/entry 我收到错误 404
。
此外,如果我设置:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'<controller>/<action>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 url http://yii2/site/entry 我也收到错误 404。
为什么会这样?我在哪里可以阅读有关 yii2 中路由的更多详细信息?我的错误在哪里?
更新:
Apache2.2(赢)
.htaccess 包含:
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
UPD2:
我收到 2 个 404 错误变体:当尝试使用路由规则时:
当我不在规则数组中使用 url 时:
修改您的重写规则。
移动线
RewriteRule ^index.php/ - [L,R=404]
成为RewriteEngine on
之后的第一个。
或将"last"标志([L]
)添加到:
RewriteRule . index.php [L]
如果没有此规则,处理将继续到下一个。
我是 Yii2 的新手,目前,我在设置应用程序时遇到错误。 我尝试使用友好的URL。
根据 DOCS
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
//... rules ...
]
]
我在我的应用程序中将此部分设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
当我尝试打开 URL http://yii2/entry 时,这工作正常。
如果我设置为:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'/entry' => 'site/entry',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 URL http://yii2/site/entry 我收到错误 404
。
此外,如果我设置:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'/' => 'site/index',
'<controller>/<action>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'defaultRoute' => 'main/index'
]
]
如果我尝试打开 url http://yii2/site/entry 我也收到错误 404。
为什么会这样?我在哪里可以阅读有关 yii2 中路由的更多详细信息?我的错误在哪里?
更新: Apache2.2(赢) .htaccess 包含:
RewriteEngine on
# If a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward the request to index.php
RewriteRule . index.php
# if $showScriptName is false in UrlManager, do not allow accessing URLs with script name
RewriteRule ^index.php/ - [L,R=404]
UPD2: 我收到 2 个 404 错误变体:当尝试使用路由规则时:
修改您的重写规则。
移动线
RewriteRule ^index.php/ - [L,R=404]
成为RewriteEngine on
之后的第一个。
或将"last"标志([L]
)添加到:
RewriteRule . index.php [L]
如果没有此规则,处理将继续到下一个。