我在Yii2中使用控制器操作以提供图像(可能在需要时调整大小后),并使它们对非网站成员隐藏。
网站控制器中的操作是 actionImage($ id)。 图像存储在名为 images 的基本目录下,该目录可能位于DOCUMENT_ROOT之外。 该操作采用一个参数,该参数是 images 文件夹下图像的相对路径,例如文章/ myimage.jpeg 我有以下配置:
<id:.+>
有了这个,我希望/site/image/articles/pasajes036.jpg能够提供图片下的文章/ pasajes.jpg。
我也在规则中尝试了http://localhost:8080/site/image?id=articles/pasajes036.jpg
但结果是一样的,即:
请求的资源/site/image/articles/pasajes036.jpg没有 在这台服务器上找到。 - 使用
调用时图像正确显示
{{1}}
感谢您的帮助。
答案 0 :(得分:0)
您需要为服务器设置重写规则,才能使漂亮的URL正常工作。
如果是Apache,很容易 - 你可以使用mod_rewrite模块。
对于内置的PHP服务器,它更复杂但仍然可行。 gonzalo123.com有例子:
但是,它是否适用于内置的Web服务器?答案是肯定的,但使用另一种语法。我们只需创建一个路由器文件并使用此路由器启动我们的服务器:
<?php
// www/routing.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false;
} else {
include __DIR__ . '/index.php';
}
现在我们用:
启动服务器
php -S localhost:8888 www/routing.php
所以你只需要创建将处理重写的路由PHP脚本。