【发布时间】:2016-12-18 08:08:13
【问题描述】:
我在 Yii2 中使用控制器操作来提供图像(如果需要,可能在调整大小之后)并保持它们对非站点成员隐藏。
动作是站点控制器中的actionImage($id)。 图像存储在名为 images 的基本目录下,该目录可能位于 DOCUMENT_ROOT 之外。 该操作采用一个参数,该参数是 images 文件夹下图像的相对路径,例如文章/myimage.jpeg 我有以下配置:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
...
'site/image/<id:^(\w+/){1}(\w+/){0,9}\w+\.\w+$ >' => 'site/image',
...
,
],
有了这个,我希望 /site/image/articles/pasajes036.jpg 在图像下提供文章/pasajes.jpg。
我也在规则中尝试了<id:.+>,但结果相同,即:
- 由远程服务器运行时可以正常工作。
- 在 yii 嵌入式服务器(php yii serve)运行时不起作用 回应是
请求的资源 /site/image/articles/pasajes036.jpg 不是 在此服务器上找到。 - 调用时正确提供图像
http://localhost:8080/site/image?id=articles/pasajes036.jpg
- 其他漂亮的 url 在两个服务器(本地和远程)上都可以工作
- 即使图像文件夹放在 DOCUMENT_ROOT 下也无法在本地工作
感谢您的帮助。
【问题讨论】:
-
你的服务器和本地操作系统和网络服务器是什么?
-
其实只是点惹麻烦。
-
我用非常简单的模式来测试它,比如 \w+\.\w+ 。它仅适用于远程服务器。
-
我忘了回答。 Apache 用于远程,yii 嵌入用于本地