{ Hello Magento 2 }

解决 Magento 2 应用问题,更注重深度挖掘。(ง •̀_•́)ง

0%

Magento 2 css js 404

首先排除掉权限问题。 然后执行 php bin/magento setup:static-content:deploy 看静态文件是否生成了。 如果已经生成了,那么很可能是 rewrite 问题。 本次遇到的问题是,http://www.example.com/static/version1511952472/frontend/Magento/luma/en_US/mage/loader.js 是 404 但是 http://www.example.com/static/frontend/Magento/luma/en_US/mage/loader.js 可以访问。 可以看出,下面的路径比上面的少了 version1511952472 ,该文件夹实际上是不存在的,是通过 rewrite 来实现转向的。 首先后台是可以控制是否使用 static files versioning 的 static files versioning

方法一

设置 Sign Static Files 为 No 这样就不存在转向问题了。但是治标不治本。 这时候你很可能无法进入后台了,所以得直接改数据库记录。

1
insert into core_config_data(path, value) VALUES ('dev/static/sign', 0);

然后执行命令:

1
php bin/magento cache:clean

方法二

Apache 下,按照一般情况,在 pub/static/.htacess 中是设置好了的:

1
2
3
4
5
6
7
8
9
10
11
<IfModule mod_rewrite.c>
RewriteEngine On

# Remove signature of the static files that is used to overcome the browser cache
RewriteRule ^version.+?/(.+)$ $1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* ../static.php?resource=$0 [L]
</IfModule>

Nginx 设置,以下仅供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
location /static/ {
# Uncomment the following line in production mode
# expires max;

# Remove signature of the static files that is used to overcome the browser cache
location ~ ^/static/version {
rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
}

location ~* \.(icojpgjpegpnggifsvgjscssswfeotttfotfwoffwoff2)$ {
add_header Cache-Control "public";
add_header X-Frame-Options "SAMEORIGIN";
expires +1y;

if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
location ~* \.(zipgzgzipbz2csvxml)$ {
add_header Cache-Control "no-store";
add_header X-Frame-Options "SAMEORIGIN";
expires off;

if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
}
if (!-f $request_filename) {
rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
}
add_header X-Frame-Options "SAMEORIGIN";
}

参考文档

Static Content is not loading after upgrade Magento 2: CSS & JS not found (404) [duplicate]