htaccess ErrorDocument not rendering - apache

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

Related

htaccess - The custom 404 error page is not working properly

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

Change Default Error Catch in htaccess?

So my question is similar to the question posed in this page
Single ErrorDocument directive to catch all errors (.htaccess)
The above person was trying to get a dynamic error page.
However my question is slightly different (although it may still have the same answer).
I am with a shared web host who displays custom error pages by default with ads on it. I want errors to result in a real error response without ads. Do I need to individually do a:
ErrorDocument 404 /404.html
For each error? Or is there a way to just tell it to show a normal error message for all errors?
Is there some type of:
ErrorDirective JustOutputErrorInsteadOfRedirecting
Thank you in advance.
With ErrorDocument directive you can also display Your custom error messeage on the same page.
ErrorDocument 404 "Sorry, the page does not exist!"
ErrorDocument 403 "Ohh, you don't have permission to access this page!"
ErrorDocument 410 "Sorry, the page no longer exists"
You can also format these messges using html tags
ErrorDocument 404 "<h2>Sorry, the page does not exist!</h2>"
ErrorDocument 403 "<h2 style='color:blue'>Ohh, you don't have permission to access this page!</h2>"
ErrorDocument 410 "<p>Sorry, the page no longer exists</p>"
The message will appear on the same page.

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"]

Apache: "Additionally, a 404 error was encountered while trying to use an ErrorDocument" when file exists

Here's my .htaccess in /var/www/avatars (I can confirm this .htaccess is being read and executed);
ErrorDocument 404 /var/www/avatars/default.jpg
Here is what I get with a 404 page:
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Here is default.jpg:
https://coinchat.org:8001/avatars/default.jpg
Why is this error happening? It was working a day ago
Tried this?
ErrorDocument 404 /default.jpg
If not, did you make any other changes to .htaccess or httpd.conf or anything?

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.....