Php Yii用户友好的url并保持旧的get格式工作
我将以下url规则设置为主配置:Php Yii用户友好的url并保持旧的get格式工作,php,yii,yii2,yii-url-manager,Php,Yii,Yii2,Yii Url Manager,我将以下url规则设置为主配置: 但现在它显示了一个错误。有没有办法让它继续工作?在我看来,最好的办法是用IDE正则表达式替换选项替换所有旧URL。但无论如何,你可以这样做: 在urlManager配置中使用以下路由规则: “规则”=>[ [ 'class'=>'my\namespace\UrlRule', “模式”=>“/”, “路由”=>“/”, ], … 使用my\namespace\UrlRule扩展yii\web\UrlRule,并重写其“parseRequest”方法,以便在以下
但现在它显示了一个错误。有没有办法让它继续工作?在我看来,最好的办法是用IDE正则表达式替换选项替换所有旧URL。但无论如何,你可以这样做:
“规则”=>[
[
'class'=>'my\namespace\UrlRule',
“模式”=>“/”,
“路由”=>“/”,
],
…
您也可以扩展yii\web\Request,这样它的“getPathInfo”方法可以在设置时使用$\u GET['r']参数。我认为最好的方法是用IDE正则表达式替换选项替换所有旧URL。但无论如何,您可以通过这种方式执行您想要的操作:
“规则”=>[
[
'class'=>'my\namespace\UrlRule',
“模式”=>“/”,
“路由”=>“/”,
],
…
您也可以扩展yii\web\Request,使其“getPathInfo”方法可以使用$\u GET['r']如果设置了参数。您不能这样做,我的朋友。它是'get'或'path'URL格式。您可以在.htaccess或apache中重写URL以将旧URL映射到新URL。您不能这样做,我的朋友。它是'get'或'path'URL格式。您可以在.htaccess或apache中重写URL以将旧URL映射到新URL。您能解释一下$pathInfo或co是什么吗完成该示例?它似乎不存在,而且我在其他任何地方都找不到允许获取格式URL的自定义urlrule示例。该示例已完全完成,除了urlrule命名空间之外,其他示例都可以正常工作。也许这不是最佳做法,但我在if()语句中定义了$pathInfo。它类似于:$pathInfo=\Yii:$app->request->get('r');if($pathInfo)结束。你能解释一下什么是$pathInfo或者完成这个例子吗?它似乎不存在,而且我在其他任何地方都找不到允许获取格式URL的自定义urlrule的例子。除了urlrule命名空间之外,这个例子已经完全完成并且可以工作了。也许这不是最佳实践,但我在if()中定义了$pathInfo语句。它类似于:$pathInfo=\Yii::$app->request->get('r');if($pathInfo)end,依此类推。
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'rules'=>array(
'<controller:\w+>'=>'<controller>/list',
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
'<controller:\w+>/<id:\d+>/<title>'=>'<controller>/view',
'<controller:\w+>/<id:\d+>'=>'<controller>/view',
'\?r=<controller:\w+>/<action:\w+>' => '<controller>/<action>'
),
),
index.php?r=controller/action¶m1=value1
namespace my\namespace;
class UrlRule extends \yii\web\UrlRule
{
public function parseRequest($manager, $request)
{
if ($pathInfo = \Yii::$app->request->get('r')) {
\Yii::$app->request->setPathInfo($pathInfo);
}
return parent::parseRequest($manager, $request);
}
}