Magento – frontend and admin not working magento 2.4.2 upgrade

.htaccess404magento2.4.2

Frontend and admin doesn't work or show only 404 not found pages

It is installed in a sub directory of root folder

The development in command line everything works

I can change the .htaccess file , it shows a little better but doesn't work

Cannot find any help yet, because not many have this issue or installed 2.4.2 yet

Guess that it has to do something with being a subfolder and new htaccess

Anyone has an effective solution?

Having front on takoda.shop and backup at takoda.shop/backup so working on 2 sites at the same time

Best Answer

I am really amazed that Magento pushed this to release without documenting it in the release note or "backwards incompatible" changes, but they did. They mention it in the installation notes, as pointed out in Diana's answer, but nowhere else.

There are several bugs filed on github where people share workarounds they are trying. Main one: https://jokiruiz.com/magento-2/how-to-run-magento-2-from-a-subdirectory/

and obviously the other options is making the change prior to upgrade https://devdocs.magento.com/guides/v2.4/install-gde/tutorials/change-docroot-to-pub.html

attempt #1 subfolder (not visible in url)

For testing purposes I have a test site upgraded to 2.4.2 and managed to find a config that uses a subfolder BUT the subfolder is invisible in the url.

  • magento installed in magento2-path subfolder
  • site working on www.mywebsite.com
  • if magento2-path was visible in url, and therefore set up in the site url-path config or in stylesheets, that must be cleaned out
  • www.mywebsite.com/magento2-path will 404

Note 2: to save work this does not have a local copy of the images and uses "static domain" for images so not certain it 100% correct for static files and probably some extra rule needed for pub/static

site-root
.htaccess
     magento2-path
     .htaccess
          pub
          .htaccess

the htaccess at the top has

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/setup/
RewriteCond %{REQUEST_URI} !^/magento2-path/update/
RewriteCond %{REQUEST_URI} !^/magento2-path/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/pub/
RewriteCond %{REQUEST_URI} !^/magento2-path/
RewriteRule .* /magento2-path/pub/$0 [L]

RewriteCond %{REQUEST_URI} ^/pub/
RewriteRule .* /magento2-path/$0 [L]

DirectoryIndex index.php

the htaccess in magento2-path is modified to (the / in front of pub is removed)

RewriteEngine on
RewriteCond %{REQUEST_URI} !^pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteRule .* pub/$0 [L]
DirectoryIndex index.php

the htaccess in pub is not modified, except to add any special old "migration" rules I had from migration from past modules or pages that are now gone

attempt #2 subfolder (with redirect)

UPDATE: I have found that for a site that used the magento install path in the URL I can make it redirect so the page shows (without that path) only when the folder is renamed to not match the path anymore. Otherwise requests get passed down the stack. You want to make sure your "root level" rewrites are used, not the magento one.

  • magento was installed in magento2-path subfolder RENAME THIS FOLDER eg tomagento2-folder

  • site working on www.mywebsite.com

  • if magento2-path was visible in url, and therefore set up in the site url-path config or in stylesheets, that must be cleaned out

  • www.mywebsite.com/magento2-path/whatever redirects to www.mywebsite.com/whatever which displays correctly

    site-root .htaccess magento2-folder2 .htaccess pub .htaccess

the htaccess at the top has (note: this is total overkill i'm sure only half the redirects are needed but not got time to clean)

RewriteEngine on

RewriteRule ^/magento2-path/$ / [R=301,L]
RewriteRule ^/magento2-path$ / [R=301,L]
RewriteRule ^magento2-path/$ / [R=301,L]
RewriteRule ^magento2-path$ / [R=301,L]

RewriteCond %{REQUEST_URI} /magento2-path/
RewriteCond %{REQUEST_URI} !^/magento2-path/setup/
RewriteCond %{REQUEST_URI} !^/magento2-path/update/
RewriteCond %{REQUEST_URI} !^/magento2-path/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/pub/
RewriteRule ^magento2-path(.*) $1  [R=301,L]

RewriteCond %{REQUEST_URI} /alpineshop/
RewriteCond %{REQUEST_URI} !^/magento2-path/setup/
RewriteCond %{REQUEST_URI} !^/magento2-path/update/
RewriteCond %{REQUEST_URI} !^/magento2-path/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/pub/
RewriteRule ^/magento2-path/(.*) /$1  [R=301,L]


RewriteCond %{REQUEST_URI} !^/pub/
RewriteCond %{REQUEST_URI} !^/setup/
RewriteCond %{REQUEST_URI} !^/update/
RewriteCond %{REQUEST_URI} !^/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/setup/
RewriteCond %{REQUEST_URI} !^/magento2-path/update/
RewriteCond %{REQUEST_URI} !^/magento2-path/dev/
RewriteCond %{REQUEST_URI} !^/magento2-path/
RewriteRule .* /magento2-folder/pub/$0 [L]

RewriteCond %{REQUEST_URI} ^/pub/
RewriteRule .* /magento2-path/$0 [L]

DirectoryIndex index.php

the htaccess in magento2-folder and magento2-folder/pub is the same as above

Related Topic