In this article we’ll show you how to set a custom 404 page via a .htaccess file. This will allow you to set the error message that visitors to your site receive when they request a page that doesn’t exist on the server.
If you read our previous article about 404 error not found pages it was discussed that handling 404 errors dynamically can be problematic if done very frequently. If you’re running WordPress on your website, you might want to think about installing the W3 Total Cache plugin which has the ability to serve static 404 errors for WordPress.
It’s typically recommended to handle 404 errors with a custom static HTML 404 error page instead of handling them dynamically. If you don’t already have one you can learn about creating a custom 404 error page, and if you’re looking to add advanced functionality to your 404 error page you can even learn about using Google’s custom 404 page widget.
The easiest way to modify your .htaccess file would be using cPanel’s file manager with the instructions below, although you can also upload a .htaccess file via FTP as well.
Create or Modify a Custom 404 Page via .htaccess
- Login to your cPanel.
- Under the Files section click on File Manager.
- Navigate to the document root folder for the site.
- Click on Settings.
- Ensure Show Hidden Files is selected.
- Then click Save.
- Right-click on the .htaccess file and select Edit.
- If the .htaccess file didn’t exist in the previous step, click on the +File link on the top left, name the file .htaccess, and set the directory for creation to /public_html/ or the document root of your site.
- You might have a text editor encoding dialog box pop-up, go ahead and just click Edit.
- Now that you are ready to edit the .htaccess file, the simplest way to set a 404 error page is by directly setting a 404 error message in the .htaccess file itself:
ErrorDocument 404 "<H1>Page not found</H1>"
If you already have a static HTML page that you’d like to use for 404 errors you can also directly point to that file with the .htaccess file as well. In this example, we have a 404.html page we want to serve up. Be sure to replace “404.html” with your actual page name:
ErrorDocument 404 /404.html
- After you’ve made your edits to the .htaccess file, click on Save Changes.
You should see a green Success pop-up
- Now if you try to pull up a page that won’t exist on the server such as /ThisPageWon’tExist you should see the custom 404 error message that we’ve configured. This first image below is the default 404 error page when a custom one is not set:
The second one is the custom 404 page that we just created:
You should now understand how to control how 404 errors are handled for your website, by either setting the error directly or pointing to a custom 404 error page. If you need help on actually creating your custom 404 error page you would want to review our article on creating a custom 404 error page. Check out our Website section for more helpful tutorials to lead you toward success.
Want more performance and power from your website? InMotion Hosting's VPS Hosting plans provide hyperfast site speeds on high-performance NVMe servers.
Dedicated Resources NVMe SSD Storage High-Availability Ironclad Security Premium Support
Need More Help?
- Click on Settings.
Thoughts on “How to Set a Custom 404 Page With .htaccess”
I’m confused where the 404.html file has to be. The root folder of the website where index.html is, or the root folder of my name, where .htaccess is itself?
Step 10 provides 2 options, and it sounds like the second one is what you are trying to do. In that example, they use the code “ErrorDocument 404 /404.html” and the 404.html page we’re using is in the document root of the website.
thanks you so much!!!
You’re welcome, glad you found it helpful!
I followed the tips, but google still sends me information that I have a wrongly configured 404 file.I have hosting on ovh
Sorry to hear that you’re running into trouble setting up your 404. As a preface, please keep in mind that we cannot support another hosting company, so this information is provided as general advice for this situation in the hope that it is helpful and not specific advice for your account.
First, make sure that you’re trying to do this on an Apache server, as other server types may not use an .htaccess file. Also, are you trying to set up a 404 message, or send visitors to a separate 404 page? If the latter, make sure that the 404.html (or equivalent) page exists and that you are using the correct file path. Lastly, be sure that that this is on its own separate line of code, and is not ‘commented out’ with a pound-sign/hashtag/octothorpe (the # symbol) because that would invalidate it. Hope that helps!
I ghave used this ErrorDocument 404 “<H1>Page not found</H1>”
after index.php rewrite but it’s not worked for me please help me with this.
In order to assist you we would need more information, please. Provide the script or account information and the location of the script (if you are an InMotion Hosting customer), then we can see if there’s something wrong with your re-write. If you’re using a rewrite for a redirect, then also check out our tutorial on creating 301 redirects.
hello there, I am not able to access my website’s adminpanel page due to 404 page not found error. I wonder I have made some changes in .htaccess file, after that this problem persist. Could anyone please help me out to get rid of this problem?
I recommend renaming your .htaccess file for example, to .htaccess.old as a test. This will disable any rules you have added and should allow you to regain access to your account.
My 404 page is locale dependant. How do I configure that. e.g. my I have 2 404 pages,
/content/aaaaa/en-us/404.html and /content/aaaa/fr-fr/404.html.
I tried doing pattern matching and putting if-else conditions but it is giving me a 400 error.
Could you please help
This is a specific coding issue for the site, so we can’t really provide specific coding support for it. However, you may have find some solutions in this support site post.
Hello, if I follow this method, I still get a 200 status code instead of 404. What should I do in order to accomplish that?
Where do you see the 200 code? I would recommend you check to make sure your website is pointed to the server you are making the changes to the .htaccess from and also that the .htaccess file is in the website’s document root directory.
I do not have the option to show hidden files under Settings. The only option is “Disable Character Encoding Verification Dialogs”.
This is not a setting under how to set 404 via .htaccess. Please keep your comments in the appropriate article. See How to show hidden files (htaccess) when using cPanel’s File Manager.
thanks for the information
Thank you! Worked first try!
This works fine for non-existing files but what about when a user tries to access a directory/folder which doesn’t exist? How to do that setting in .htaccess file?
The same instructions still apply. You would just need to adjust the path specified. By default, all files and folders will be under a root directory.
If you have any further questions, please let us know.
Is there a way to set 404 Redirects for specific pages? For example a 404 happening on: https://www.mywebsite.com/blog/invalid-slug should be redirected to https://www.mywebsite.com/blog and a 404 happening on https://www.mywebsite.com/company/invalid-slug should be redirected to https://www.mywebsite.com/company? Is the best way to do this via .htaccess or elsewhere?
You should be able to accomplish this with 2 separate .htaccess files. They discuss this further in this forum post I found via online search.
Wow, how easy and simple! Thanks!
But what if you just want “not found” pages to redirect to home page?
Here is a link to a helpful guide I found via online search where they discuss possible solutions.
Thanks you very much. Simple and easy to follow
Thanks man, it worked! 🙂
I need a help i have a page like www.example.com/dwdwef it shows blank screen i want to redirect it to 404 page plz help me out.
I recommend creating a 301 redirect from ” www.example.com/dwdwef ” to the “404.html” page.
GREAT !GREAT !GREAT !GREAT !GREAT !GREAT !GREAT ! THANKS A TON GOD BLESS YOU.
It worked at one shot ! 🙂
Ashish, we’re so happy to help! ^_^