Symfony 2 - 直接访问公共资产

3
我在我的 /web 文件夹中有一个名为“cdn”的文件夹,我想公开访问其中的 JavaScript 文件(基本上是书签小程序)。我不想使用控制器来提供文件,而是让服务器直接提供文件。
在Symfony 2中,我该如何做?(PS我也在使用Assetic)
谢谢你的帮忙, 罗曼

1
我猜你需要在.htaccess文件中添加一条重写规则。 - Alexandru Olaru
1
我认为Symfony的原始.htaccess是允许的。当您在浏览器中输入资源的URL时会发生什么?没有找到路由还是其他情况? - Jovan Perovic
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Romain Bruckert
我找到了一个临时的方法。使用{{ asset('asset/relativepath') }}将给我资产的链接,然后我只需要添加域名即可。但我也想要更便携的东西(即自动域名,并在非生产环境中使用app_dev)。 - Romain Bruckert
2个回答

3
您可以通过在配置中使用 assets_base_urls 来定义您的 public 文件夹的根目录,从而使用不同的目录:

app/config/config.yml:

templating:
    assets_base_urls: "%assets_base_urls%"

这将使用特定上下文中定义的值: app/config/config_dev.yml:
parameters:
    assets_base_urls: "http://localhost/.../cdn/"

app/config/config_prod.yml:

parameters:
    assets_base_urls: "http://cdn.example.com/"

这个URL应该指向您服务器上的一个目录,例如/var/www/site/public/

您需要在两个环境中将资产转储到相应的目录,以便将文件放到正确的目录中:

# dev
php app/console assetic:dump --env=dev .../cdn --no-debug
# prod
php app/console assetic:dump --env=prod `/var/www/site/public/` --no-debug

1
优秀的解决方案。谢谢你。 - Romain Bruckert

0

您可以始终使用直接URL。"end-asset",也就是www.domain.com/path/relative/to/web/asset.img从未由应用程序提供,而是由服务器提供。

因此,无论您使用哪个Web服务器,都可以直接访问该资源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接