I install Magento 2.4.2 but I have got 404 page not found, please give any suggestions for run M2.4.2 without a virtual host because I want to work on multiple Magento at a time so the virtual host is not suitable for me.
Magento 2.4.2 – How to Run Without Creating Virtualhost
http-error-404magento2.4.2migrate
Related Solutions
As @Diana Suggest, I create virtual host to run m2.4.2-ee
For that follow the below steps :
1. Copy .conf file for virtual domain :
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
2. After that, edit your example.com.conf file using this below commad :
sudo nano /etc/apache2/sites-available/example.com.conf
and then, paste the below code :
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName example.com
ServerAlias example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/m242ee/pub/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
3. After that, you need to enable site using below command :
sudo a2ensite example.com.conf
4. Then, setup your host file using this command :
sudo nano /etc/hosts
and add 127.0.0.1 example.com line like
127.0.0.1 localhost
127.0.1.1 test-desktop
127.0.0.1 example.com
5. update url in core_config_data table :
UPDATE `core_config_data` SET `value` = 'http://example.com/' WHERE `core_config_data`.`path` = 'web/unsecure/base_url';
UPDATE `core_config_data` SET `value` = 'http://example.com/' WHERE `core_config_data`.`path` = 'web/secure/base_url';
UPDATE `core_config_data` SET `value` = 'http://example.com/' WHERE `core_config_data`.`path` = 'web/unsecure/base_link_url';
UPDATE `core_config_data` SET `value` = 'http://example.com/' WHERE `core_config_data`.`path` = 'web/secure/base_link_url';
6. In last, restart your apache server :
sudo service apache2 restart
Why this type of issue faced?
It's because, everything is running from pub folder in new version. You can check m2.4.2-ee or m2.4.2-ce .htaccess file
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
There are major difference in new .htaccess and old version .htaccess file. If you replace old version's .htaccess file then, still you can't running proper.
So, Virtual host is only one solution for now. Using this solution, you can run your new m2.4.2 version and also old version of Magento if you have installed already.
Hope, it will useful for you.
Reference : Click Here
It seems now Magento will only load from pub folder. By default it will not be possible to load it from the root of Magento.
So the best solution for this is to create a virtual host and point it to pub directory.
Alternative
Meanwhile, as an alternative to run this on local machine I tried something else that seems to be working fine with the default setup. Like earlier we were using the base_url
as http://127.0.0.1/magento
. So instead of this now we need to use http://127.0.0.1/magento/pub
as the base_url
. Secure and Unsecure URL needs to be setup on the basis of this.
Setting this up will avoid the issue of 404 page coming.
Note: Verified this with the default Magento only. Not sure for the projects having much complex functionalities. But you can give this a try.
We have another option without adding /pub follow below steps
1. Copy .httaccess file from pub folder and override it to root .htaccess file
2. Upload pub/index.php file to root magento directory
3. Add below code in app/etc/env.php file
'system' => [
'default' => [
'web' => [
'unsecure' => [
'base_media_url' => '{{secure_base_url}}pub/media/',
'base_static_url' => '{{secure_base_url}}pub/static/'
],
'secure' => [
'base_media_url' => '{{secure_base_url}}pub/media/',
'base_static_url' => '{{secure_base_url}}pub/static/'
]
]
]
],
Best Answer
Yes, you can run Magento without virtual host. for this follow these steps
Now check your Magento is running successfully.
Note: in older versions of Magento you don't need to hit pub folder just give path till Magento root directory and you Magento will be working fine. because in older version index.php file is in root directory and in later versions index.php file is inside pub folder.