以下是我为Url Manager使用的规则。
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'post/<arg1>/<arg2>/<arg3>/<arg4>' => 'post/filter',
'posts' => 'post/index',
],
],
我的.htaccess
RewriteEngine on
# If a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Otherwise forward it to index.php
RewriteRule . index.php
规则似乎有效,网址如
post/filter?arg1=9&arg2=0&arg3=d&arg4=3
正在变成,
post/9/0/d/3
但是,我有一个类似下面的搜索表单
$form = ActiveForm::begin([
'action' => Url::to(['post/filter']),
'method' => 'get'
表单中的字段名为arg1,arg2,arg3,arg4
。现在,当我提交表单时,url会返回格式
post/filter?arg1=9&arg2=0&arg3=d&arg4=3
我不确定它是否与规则或我提交表单的方式有关(我只需要通过GET方法提交表单)。有帮助吗?谢谢。
答案 0 :(得分:-1)
尝试此规则
'post/filter?<arg1:\w+>=<val1:\d+>&<arg2:\w+>=<val2:\d+><arg3:\w+>=<val3:\d+><arg4:\w+>=<val4:\d+>' => 'post/filter/<val1>/<val2>/<val3>/<val4>'