Magento 2.1 – Static Content Not Loading After Upgrade

404magento-2.1magento-2.1.3static-content

After upgrade from the Magento 2.1.0 to the Magento 2.1.3 (using composer) static content is not loading anymore. In the browser console I can see that all files is unavailable (404):

files unavailable preview

I don't see directories with the name version* in the pub directory.

What I already made but it didn't help:

  1. set all permissions to 777, but without success.
  2. cleaned cache
  3. removed the pub/static/*
  4. regenerated static content few times
  5. replaced the .htaccess file (in the pub/static directory) with the file from an official repository.

Another info:

  • mod_rewrite is enabled
  • FollowSymLinks is allowed (in the default host configuration and local .htaccess)
  • This configuration worked fine with Magento 2.1.0 before the updating to the 2.1.3
  • pub/static is writable

Any suggestions?

Best Answer

The main issue was caused by the incorrect rewrites work ( as @Marius told ). There was no RewriteBase in my directory pub/static/ and Apache could not find the files because searched for them from the root folder. After we’ve added: RewriteBase /pub/static everything start working.

How it worked:

by this address:

http://m2.uchuhlebov.web.ra/pub/static/version1481885888/frontend/Magento/luma/en_US/mage/requirejs/mixins.js

the rewrite should work:

RewriteRule ^version.+?/(.+)$ $1 [L]

as the line started from the root folder:

/pub/static/version...

it hasn’t worked and could not redirect to the file, needed.

Rewrite without base:

rewrite doesnt work

Rewrite with base:

rewrite works

Here a part of my .htaccess file from the pub/static (rewrites) :

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /pub/static
    # 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>

How to disable static-files versioning:

If you do not want to use static files versioning you can disable this feature in the Magento admin area:

config

It is possible to change this setting for default scope using the following MySQL query:

INSERT INTO `core_config_data`(`path`, `value`) VALUES ('dev/static/sign', 0) ON DUPLICATE KEY UPDATE `value`=0

Then execute next command to clear a configuration cache:

bin/magento cache:clean config

PS: My answer is actual for the apache2 users. If you are using NGINX see this answer (by @kevin-javitz)

Related Topic