htaccess - The custom 404 error page is not working properly - apache

EDIT: This question has been solved. Please see my answer.
I have the file .htaccess that contains only the following line (I have added a custom 404 error page)
ErrorDocument 404 404.php
This is the code of the page 404.php:
<?php echo("file not found")?>
The problem is that if i type in my browser for example the url http://127.0.0.1/www/website/this_file_does_not_exist the page shows this line:
404.php
In other words, i see only the filename of the custom 404 error page instead of the content of the 404 error page.
I have already searched on stackoverflow for a solution without success.
How can i fix this problem?

From Apache documentation:
The syntax of the ErrorDocument directive is:
ErrorDocument <3-digit-code> <action>
where the action will be treated as:
A local URL to redirect to (if the action begins with a "/").
An external URL to redirect to (if the action is a valid URL).
Text to be displayed (if none of the above). The text must be
wrapped in quotes (") if it consists of more than one word.
In other words, if you're going to use a local URL it has to begin with a "/":
ErrorDocument 404 /404.php

Related

Capturing and logging broken links on a custom 404 page

I am trying to create a customer 404 page in php that captures and can log into a database the page that was requested. I have this in my .htaccess file already:
ErrorDocument 404 http://mywebsite.com/notfound.php
What I am trying to do is append the requested URI to as a query string to the URL. I have tried this:
ErrorDocument 404 http://mywebsite.com/notfound.php?url=%{REQUEST_URI}
but the URL shows the literal text that I put in above. So I figured I would need some sort of flag at the end like [QSA] or something but all attempts result in a server error 500.
My ultimate goal is to capture the attempted broken link and the referring URL (which I can get from $_SERVER['HTTP_REFERER']) on the notfound.php page and log this into my database where I can pull a report of all links, hyperlinked or called via AJAX, that are broken or missing. I am able to do everything except get the requested URI of the actual link that caused the 404 error.
You shouldn't use ErrorDocument 404 with http:// in the target to avoid full redirect, like this:
ErrorDocument 404 /devsite/notfound.php
Then original 404 URI will be available to you as $_SERVER["REQUEST_URI"]

htaccess ErrorDocument not rendering

i am trying to show an custom error message when a page is not found and on my .htaccess i added a line like this:
ErrorDocument 404 error/404.html
but this just shows me 404.html on the screen instead rendering the 404.html page and if i write it like this
ErrorDocument 404 /error/404.html
than it gives me an error
Additionally, a 404 Not Found error was encountered while trying to
use an ErrorDocument to handle the request.
Is there another way to do this to show the actual error html page ? Thank you, Daniel!
As per your description it appears that your error folder is inside DOCUMENT_ROOT/site folder. In that case following full path ErrorDocument directive should work for you:
ErrorDocument 404 /site/error/404.html

The requested URL was not found on this server

I have simple html site. how I can fix the problem 'The requested URL was not found on this server' when user gives wrong URL. for example user type mydomain.com/abc.html and this page is not exist on server, so it will cause an error. how to redirect it on error page to avoid this error.
Create a .htaccess file and add this line.
ErrorDocument 404 /foo.html
This will redirect any 404 error to foo.html

Redirect via htacces to error pages (not found & Internal Server error)

can I vía .htaccess redirect when
Users finds an Internal Server Error
A not found page
Is that posible? if so, can someone help me with the rewrite rules?
edit
trying
ErrorDocument 500 /oohps.php
ErrorDocument 404 /where.php
and adding them at domain.com/oops.php and domain.com/where.php but still not loaded
Why not just use custom error responses via ErrorDocument?
ErrorDocument 500 /errors/internal-server-error.html
ErrorDocument 404 /errors/not-found.html
It is useful I am able to redirect to index page on 404 error(page not found) by modifying "ErrorDocument" in /etc/apache2/conf.d/localized-error-pages file.
Thanks.....

forward Request parameters to custom 404 page using ErrorDocument in apache?

Is there a way to have the request parameters "forward on" to the custom error file in apache much like [QSA] does on rewrite rules?
if i send in www.foo.com/doesnotexist?bar=true
and i have this in vhost:
ErrorDocument 404 /customerrorpage
then it would call customerrorpage with:
customerrorpage?bar=true
I know this is really old question, but it hasn't been answered and so in case someone else is searching the site for the answer I'll share what I know.
The Apache 2.2 ErrorDocument page says that when you have a Custom Error page which is a local page then a number of environment vars will be set which can be read from your customer error handler. One of the vars is REDIRECT_QUERY_STRING which will contain the query string that the original page had. So in your example the REDIRECT_QUERY_STRING would contain 'bar=true'.