【问题标题】:Symfony2 shared/external assetsSymfony2 共享/外部资产
【发布时间】:2015-12-15 15:09:09
【问题描述】:

我正在尝试使用 Web 文件夹之外的资产并收到 404 错误消息。我有位于 www 根文件夹中的资产文件夹(/js、/css、/images),我尝试将这些文件夹符号链接到我的 symfony Web 文件夹中。我尝试在我的 apache 配置中为每个创建一个别名,但这也不起作用。这些资源在多个项目之间共享,我想避免重复这些资产。

这可以将资产文件夹/文件符号链接到 symfony 网络文件夹吗?我敢肯定,简单的答案是将资产重做为 symfony 的做事方式,但是这些是遗留资产,仍然需要保留在原处。

我当前的设置是在旧模式下运行的 ezpublish5 安装,在 Windows 7 上使用 vagrant 开发环境。

【问题讨论】:

    标签: symfony ezpublish


    【解决方案1】:

    您可以将想要公开访问的任何类型的文件放入web/ 目录。

    相对于该目录可以访问它们,例如如果您有一个文件web/legacy/css/oldstuff.css,可以通过www.example.com/legacy/css/oldstuff.css 访问它。

    手动符号链接到另一个也应该有效。但是,请确保您的链接指向正确的位置,尤其是在部署之后。

    【讨论】:

    • 我将每个文件夹的符号链接添加到 web.xml 中。所以有一个/web/css/style.css,在我的模板文件中有/css/style.css。也许这个问题存在于 ezpublish/symfony2 或我的虚拟主机配置设置中。如果我在 .conf 文件中将环境更改为 prod,我会得到 css + js 文件渲染,但没有任何图像。如果我在开发环境中,那么我什么也得不到。我已经运行了所有资产转储等。
    • 另一个可能的问题原因可能是您的网络服务器配置。也许你有一些损坏/过时的重写规则之类的。
    【解决方案2】:

    通过更新我的虚拟主机 apache 重写规则,我能够使 /web/css、/web/js 和 /web/images 文件夹中的文件正常工作。

    #RewriteCond %{ENV:ENVIRONMENT} "prod"
    #RewriteRule ^/(css|js)/.*\.(css|js) - [L]
    
    RewriteRule ^/css/ - [L]
    RewriteRule ^/js/ - [L]
    RewriteRule ^/images/ - [L]
    

    所以这行得通。我不确定是否有更好的方法,或者当我开始将遗留代码重构为 twig 模板时,这是否会对 symfony 资产管理产生负面影响。我的旧模板没有利用树枝资产标签,而是标准的 html src 包含。

    【讨论】:

      猜你喜欢
      • 2023-01-21
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      相关资源
      最近更新 更多