[英]how to fix css loading problem on production server
我的网站现在托管在服务器上,网址是这样的
test1.test.com
但现在我必须将它移到另一个他们没有这种能力的主机上,我不得不将其更改为:
test.com/test1
到目前为止,除了 CSS 和 JS 文件之外,一切正常,我收到 404 not found 错误。
就我而言,我没有做任何更改,这就是我加载 CSS 文件的方式
<link rel="stylesheet" href="{{ asset('css/main.css') }}">
有谁知道我该如何解决这个问题? 当然,我尝试在{{ asset('css/main.css')
}} 之前添加 (test1) 但它没有改变任何东西。
PS:源代码没有保存在 /test1 只是路由到负载均衡器的子目录下。
这是 docker 镜像的 apache2 设置文件:
<VirtualHost *:80>
DocumentRoot /var/www/html/web
<Directory /var/www/html/web>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
ErrorLog /var/log/apache2/app_error.log
CustomLog /var/log/apache2/app_access.log combined
</VirtualHost>
部署在使用 docker 映像的云服务器上,并且在本地以我访问网站的任何方式工作。 任何想法或设置它可能会有所帮助? 提前致谢
它使用相对路径,因此如果您的“基本”路径是 /test1,则相对路径将在名为/test1/css/
的文件夹中查找 css 文件。
根据您的 symfony 版本, asset()
函数允许absolute
配置参数使路径成为绝对路径,因此:如果您包含这样的静态文件会发生什么:
<link rel="stylesheet" href="{{ asset('css/main.css', absolute=true) }}" />
如果您使用的版本高于 3.0,请使用:
<link rel="stylesheet" href="{{ absolute_url(asset('css/main.css')) }}" />
我只想感谢每一个试图帮助我解决问题的人,但现在我找到了问题和解决方案:
该问题与 symfony 本身无关,但与托管服务有关,似乎是服务提供商正在使用 ingress 和 Kubernetes,而 ingress 不支持静态文件(css、js)加载。 如果您有权访问服务器设置文件,则有解决方法,但在我的情况下没有。
我的解决方案是将静态文件作为服务提供。 它类似于我的资产和所有静态文件的私有 CDN。
再次感谢,如果有人遇到同样的情况,我将非常乐意提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.