How to Resolve Magento 404 Error Page Not Found

On a recently installed Magento, version 1.7.0.2, freshly downloaded from their website, I was going through setting up the e-commerce site, following their documentation, manuals they emailed, and support forums, but was having the weirdest problem:

  • the website base url was saying: websitename.com/index.php
  • categories showed up in my main menu as I had created them, but when clicking the category (eg. category-created), it would bring me to a 404 Page Not Found error
  • if I then used the url: websitename.com/index.php/category-created/ I could find the category I was looking for

This should immediately ring a few bells for the savvy coder, and tell you that the mod-rewrite file isn’t working as it should for Magento.

So, the problem was that the .htaccess file that supposedly comes with Magento by default, wasn’t supplied in the distribution.

All that I had to do to solve the problem was get my hands on a copy of the default .htaccess file that comes with the distribution, and plop that down in the root directory, and everything immediately worked as it was supposed to.

I found a copy of the .htaccess file on colinmollenhour’s github repository, which I will copy/paste here for you to copy/paste into your own file.

A few tips:

  1. When saving the .htaccess file on your website’s root directory, if you’re saving it in notepad, make sure you name it as simply: .htaccess, and drop down the menu below it selecting (*.*) All files.
  2. The file is to be located in your e-commerce store’s root directory, which is the same place that Magento resides.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

############################################
## uncomment these lines for CGI mode
## make sure to specify the correct cgi php binary file name
## it might be /cgi-bin/php-cgi

#    Action php5-cgi /cgi-bin/php5-cgi
#    AddHandler php5-cgi .php

############################################
## GoDaddy specific options

#   Options -MultiViews

## you might also need to add this line to php.ini
##     cgi.fix_pathinfo = 1
## if it still doesn't work, rename php.ini to php5.ini

############################################
## this line is specific for 1and1 hosting

    #AddType x-mapp-php5 .php
    #AddHandler x-mapp-php5 .php

############################################
## default index file

    DirectoryIndex index.php

<IfModule mod_php5.c>

############################################
## adjust memory limit

#    php_value memory_limit 64M
    php_value memory_limit 128M
    php_value max_execution_time 18000

############################################
## disable magic quotes for php request vars

    php_flag magic_quotes_gpc off

############################################
## disable automatic session start
## before autoload was initialized

    php_flag session.auto_start off

############################################
## enable resulting html compression

    #php_flag zlib.output_compression on

###########################################
# disable user agent verification to not break multiple image upload

    php_flag suhosin.session.cryptua off

###########################################
# turn off compatibility with PHP4 when dealing with objects

    php_flag zend.ze1_compatibility_mode Off

</IfModule>

<IfModule mod_security.c>
###########################################
# disable POST processing to not break multiple image upload

    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

<IfModule mod_deflate.c>

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip

    # Insert filter on all content
    ###SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

    # Netscape 4.x has some problems...
    #BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    #BrowserMatch ^Mozilla/4.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    #BrowserMatch bMSIE !no-gzip !gzip-only-text/html

    # Don't compress images
    #SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    #Header append Vary User-Agent env=!dont-vary

</IfModule>

<IfModule mod_ssl.c>

############################################
## make HTTPS env vars available for CGI mode

    SSLOptions StdEnvVars

</IfModule>

<IfModule mod_rewrite.c>

############################################
## enable rewrites

    Options +FollowSymLinks
    RewriteEngine on

############################################
## you can put here your magento root folder
## path relative to web root

    #RewriteBase /magento/

############################################
## workaround for HTTP authorization
## in CGI environment

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################
## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################
## never rewrite for existing files, directories and links

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

############################################
## rewrite everything else to index.php

    RewriteRule .* index.php [L]

</IfModule>

############################################
## Prevent character encoding issues from server overrides
## If you still have problems, use the second line instead

    AddDefaultCharset Off
    #AddDefaultCharset UTF-8

<IfModule mod_expires.c>

############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires

    ExpiresDefault "access plus 1 year"

</IfModule>

############################################
## By default allow all access

    Order allow,deny
    Allow from all

############################################
## If running in cluster environment, uncomment this
## http://developer.yahoo.com/performance/rules.html#etags

    #FileETag none

 

32 Comments

  1. Vernam June 30, 2013 4:19 pm  Reply

    i have the exact same problem, the htaccess you provided didnt change a think 🙁
    still getting all besides front page 404 error, i cant even login to admin panel!

    wtf is that problem!?

    • ned July 13, 2013 11:11 am  Reply

      Dear Renusharma & Vernam, are you sure that you saved the htaccess file properly? ie. only as “.htaccess” not “.htaccess.txt” or “.htaccess.php” ?

      Also, you might want to confirm that modrewrite is enabled in your webserver, for Apache you can start your search here ~> http://httpd.apache.org/docs/current/mod/mod_rewrite.html

  2. John August 31, 2013 10:26 pm  Reply

    fixed my problem.They really really really need to include that in the distribution

  3. Rocky October 17, 2013 6:58 am  Reply

    Hi this didnt fix my problem, I copied the .htaccess content you have to my htaccess, I cleaned cache, my mod_rewrite is enabled, but still the 404 error appears in all links, except homepage. What else did I missed?

    • ned October 21, 2013 11:59 am  Reply

      Hello, did you make sure that the .htaccess file is named properly?

      1. When saving the .htaccess file on your website’s root directory, if you’re saving it in notepad, make sure you name it as simply: .htaccess, and drop down the menu below it selecting (*.*) All files.
      2. The file is to be located in your e-commerce store’s root directory, which is the same place that Magento resides.

  4. Jacco Ermers October 20, 2013 11:29 pm  Reply

    Still the same issue here. I tried your .htaccess, didn’t work. Made sure mod_rewrite is enabled:

    sudo a2enmod rewrite

    no result. Clean install of apache 2.2 on my local ip: http://ipnumber/magento

    • ned October 21, 2013 12:00 pm  Reply

      Hello Jacco. Are you sure that the .htaccess file is located in the right directory and named properly?

      1. When saving the .htaccess file on your website’s root directory, if you’re saving it in notepad, make sure you name it as simply: .htaccess, and drop down the menu below it selecting (*.*) All files.
      2. The file is to be located in your e-commerce store’s root directory, which is the same place that Magento resides.

    • ned October 21, 2013 12:01 pm  Reply

      Also, please see comment above for a way to confirm mod_rewrite is enabled.

  5. lecteur de glycémie October 26, 2013 4:47 am  Reply

    I found a solution.

    not allow the url rewrting in the settings

    worked for me 😉

  6. Claudia September 11, 2014 11:07 am  Reply

    Thank you!!! It solved my problem! 🙂

  7. chandru October 29, 2014 4:17 am  Reply

    Works like charmmmm. .. thanks a lot 🙂

    • Ned October 31, 2014 1:41 pm  Reply

      Happy to help Chandru.

  8. Max November 20, 2014 12:28 pm  Reply

    Thank you!!!!!

    WORKED

    • Ned November 27, 2014 7:35 pm  Reply

      So happy to hear Max!!

  9. Igor December 21, 2014 6:12 am  Reply

    Thanks a lot…This worked for me super!!!!
    Thanks for good advice.

    • Ned January 29, 2015 11:10 pm  Reply

      Happy to help Igor!

  10. Tapajyoti December 30, 2014 11:14 pm  Reply

    Thanks man . It worked , Although Base URL rewrite could be another option to fix this issue . Anyway good find 🙂

    Tapajyoti

    • Ned January 29, 2015 11:10 pm  Reply

      Happy it worked Tapajyoti, and thanks for the suggestion!

  11. Dvoy May 4, 2015 2:59 am  Reply

    Your a lifesaver man! Thanks

    • Ned May 11, 2015 5:52 pm  Reply

      Happy to help Dvoy. 🙂

  12. Shahzad Hasan May 26, 2015 1:59 am  Reply

    Thanks, This solution saved my life. By mistake the # removed from the “RewriteBase /magento/” and it totally messed up my admin panel. Then see the .htaccess code here, i just recognized my mistake and corrected it. It works fine now.

    • Ned June 5, 2015 10:29 am  Reply

      Happy it helped Shahzad! I’d suggest, if you can, to migrate your e-commerce store to WordPress! So much easier and glitch free.

  13. Jon August 25, 2015 9:35 am  Reply

    Thank you for this! I had made the mistake of messing with my PHP.ini and .HTACCESS files trying to update Memory Allocation and in the process corrupted my whole site. I eventually got the site back but the only page working was the home page. Updated my HTACCESS with the code you supplied and things are working again!

    Life saver – muchas gracias!

  14. Mustafa December 17, 2015 6:03 am  Reply

    Thank you so much 🙂 you are seriously great (Y)

  15. Ghazi Khan January 28, 2016 12:34 am  Reply

    This is gave 500 error for me.. i have already been facinf 404 error on my magento website. tried your .htaccess file. checked file name while saving but when i uploaded to root folder my website it shows error 500. Do u have any fix for 404 error page…

    • Ned February 10, 2016 1:18 pm  Reply

      500 Internal Server Error
      A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.

      Ghazi, this indicates to me that the 404 solution you made had an error in it, likely somewhere either in the code you changed/wrote, in how you saved it, how it was uploaded, or the access rights on the .htaccess file itself. A safe bet is to always just modify the existing .htaccess file to avoid much of these errors.

      Please also note that a 404 error is file not found, so the file must be there in the first place..

  16. Kunal February 19, 2016 8:25 pm  Reply

    You rocks sir…. I wasted 3-4 days for this issue. Went though many blogs.. But your only .htaccess file works..
    No need to change url rewrights.. Set it Yes.
    Only replace of this .htaccess file sufficinet to eliminate 404 error..
    Thanks buddy..

    • Ned April 8, 2016 9:41 pm  Reply

      Kunal, something tells me that I also wasted a few days on this issue! Glad it helped 🙂

  17. Pinky_P August 17, 2016 3:13 am  Reply

    I tried so many different suggestions on how to fix my problem – nothing worked!
    However, coping .htacces you provided worked perfect 🙂 thank you!!!!

    • Ned November 5, 2016 6:05 pm  Reply

      So happy it helped Pinky!

Leave a Reply

two − 1 =