当网址为 /case 或者 /case/ 时,Yii getAlias 生成的图片地址不一样,进而导致 404
1、视图中代码实现如下
当网址为 http://official.local/case 时,生成的 ,图片地址为 http://official.local/static/images/header/top.png,响应 200
当网址为 http://official.local/case/ 时,生成的 ,图片地址为 http://official.local/case/images/top.png ,响应 404。怎样解决?如图1
2、查看 http://official.local/case/ 的页面源代码,生成的 ,图片地址为 http://official.local/case/images/top.png ,响应 404。如图2
3、查看 Debug,原来已经报错,且响应 404 yii\base\InvalidRouteException: Unable to resolve the request “case/”. ,如图3
yii\base\InvalidRouteException: Unable to resolve the request "case/". in C:\wwwroot\official-website-management-system\src\vendor\yiisoft\yii2\base\Module.php:561 Stack trace: #0 C:\wwwroot\official-website-management-system\src\vendor\yiisoft\yii2\web\Application.php(103): yii\base\Module->runAction('case/', Array) #1 C:\wwwroot\official-website-management-system\src\vendor\yiisoft\yii2\base\Application.php(384): yii\web\Application->handleRequest(Object(yii\web\Request)) #2 C:\wwwroot\official-website-management-system\src\frontend\web\index.php(18): yii\base\Application->run() #3 {main} Next yii\web\NotFoundHttpException: Page not found. in C:\wwwroot\official-website-management-system\src\vendor\yiisoft\yii2\web\Application.php:115 Stack trace: #0 C:\wwwroot\official-website-management-system\src\vendor\yiisoft\yii2\base\Application.php(384): yii\web\Application->handleRequest(Object(yii\web\Request)) #1 C:\wwwroot\official-website-management-system\src\frontend\web\index.php(18): yii\base\Application->run() #2 {main}
4、最终实现了一个小的帮助类方法
public static function url($path): string { $cdn = Yii::$app->params['cdnDomainHttps'] ?? ''; return rtrim($cdn, '/') . '/' . ltrim($path, '/'); } <img loading="lazy" class="top-icon" src="<?= CdnHelper::url('statics/images/header/top.png') ?>">
近期评论