我的网站现在托管在服务器上,URL就是这样
test1.test.com
但是现在我必须将其移动到他们没有此功能的另一台主机上,我不得不将其更改为:
test.com/test1
直到现在一切正常,除了我得到404 not found错误的CSS和JS文件。
对于我来说,我没有做任何更改,这就是我加载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 image的云服务器上进行的,并且在本地,无论我以何种方式访问网站,它都可以正常工作。 任何想法或设置可能会有所帮助? 预先感谢
答案 0 :(得分:5)
它使用相对路径,因此如果您的“基本”路径是/ 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')) }}" />
答案 1 :(得分:0)
我只想感谢所有尝试帮助我解决问题的人,但是现在我找到了问题和解决方法:
问题本身与symfony无关,但与托管服务有关,它似乎是服务提供商正在使用ingress和Kubernetes,而ingress不支持静态文件(css,js)加载。如果可以访问服务器设置文件,则可以解决,但在我的情况下,没有访问权限。
我的解决方案是将静态文件作为服务提供。它像我的资产和所有静态文件的私有CDN一样。
再次感谢,如果有人遇到同样的情况,我将非常乐意提供帮助。