在yii2我有控制器:
public function actionRequest($date) {
...
}
我需要网址request/2015-12-03
而不是request?date=2015-12-03
那么,如果是字符串或日期,如何从路由获取日期?这不起作用(找不到页面):
'user/request/<date:\w+>' => 'user/request'
奇怪的是,view
,update
和delete
行动效果很好。网址request?date=2015-12-03
也有效。我使用Apache服务器。
main.php:
'components' => [
'request' => [
'baseUrl' => '',
],
'urlManager' => [
'baseUrl' => '',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'user/view/<id:\d+>' => 'user/view', // works
'user/update/<id:\d+>' => 'user/update', // works
'user/delete/<id:\d+>' => 'user/delete', // works
'user/request/<date:\d{4}-\d{2}-\d{2}>' => 'user/request', // doesn't work
'user/request/<date:\w+>' => 'user/request', // doesn't work
[
'pattern' => 'login',
'route' => 'user/login',
],
[
'pattern' => 'logout',
'route' => 'user/logout',
],
],
],
...
]
.htaccess来自这篇文章http://www.yiiframework.com/wiki/755/how-to-hide-frontend-web-in-url-addresses-on-apache/ root中的.htaccess:
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ frontend/web/$1 [L]
</IfModule>
# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>
# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]
.htaccess in / frontend / web:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
答案 0 :(得分:3)
日期的正则表达式必须像这样
<date:\d{4}-\d{2}-\d{2}>