首页  >  文章  >  web前端  >  如何在 Symfony 2 中管理 CSS 资产路径以实现安全高效的部署?

如何在 Symfony 2 中管理 CSS 资产路径以实现安全高效的部署?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-12 09:18:01890浏览

How to Manage CSS Asset Paths in Symfony 2 for Secure and Efficient Deployment?

Symfony 2 中 CSS 资源的路径

问题:

在 Symfony 2 项目中,您有一个包含图像和字体引用的 CSS 文件(例如 url(..))。您希望在 CSS 中引用这些文件,而不直接在公共目录中暴露原始文件。

可能的解决方案:

解决方案 1:绝对路径

将 CSS 中的所有路径更改为绝对路径并不是一个合适的解决方案,因为应用程序可能并不总是从同一个子目录访问。

解决方案 2:使用“cssrewrite”的 Assetic " 过滤器

将 Assetic 与“cssrewrite”过滤器一起使用可以帮助重写路径,但通常会导致生成不正确的路径。

解决方案 3:相对路径

将 CSS 中的所有路径更改为相对于样式表位置是有效的,但在开发环境中除外,其中 CSS 路径包含“/app_dev.php”并导致图像路径出现“NotFoundHttpException”。

工作解决方案:

唯一的工作解决方案是将原始 CSS 文件放在私有目录中(例如“Resources/assets/css”)并将其编译为使用 Assetic 的公共目录(例如“web/css”)。

代码结构:

...
+-src/
| +-MyCompany/
|   +-MyBundle/
|     +-Resources/
|       +-assets/
|         +-css/
|           +-stylesheets...
+-web/
| +-css/
|   +-stylexyz.css
| +-images/
|   +-images...
...

Assetic Twig 代码:

{% stylesheets
    '@MyCompanyMyBundle/Resources/assets/css/*.css'
    filter="cssrewrite"
%}
    <link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}

编译过程:

此过程将确保 CSS 文件以正确的图像路径编译到公共目录中:

  1. 将原始CSS文件复制到public目录。
  2. 运行assetic:dump编译CSS文件。
  3. 从public目录中删除原始CSS文件。

优点:

  • 允许将原始 CSS 文件存储在私有目录中。
  • 使用正确的图像路径将 CSS 编译到公共目录。
  • 不向公众公开原始 CSS 文件。

以上是如何在 Symfony 2 中管理 CSS 资产路径以实现安全高效的部署?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn