I am trying to make my web server have customized error documents/pages but with PHP
code included in them, without redirecting them away from the page that has thrown the error.
Let's say we are navigating to http://website.com/pages/1
and it was to throw the error 500, by default the page would just be a blank white page with the text "Error 500 (Internal Server Error)
" which would look something like:
As you can see from the above, it has NOT redirected away from the page that has thrown the error. I want this page to look "a part of the website" but with PHP content included in them.
I cannot include PHP content in the error pages over in the cPanel by editing the pages you see below:
If I was to edit the error 500 page above, with the content below the problem would be that http://website.com/pages/1
would redirect to http://website.com/500.shtml
and then in turn redirect to http://website.com/500.php
I do NOT want it to redirect at all otherwise it means refreshing the page essentially will just refresh the 500.php page rather than refreshing the /pages/1
<script language="javascript">
window.location.href = "http://www.website.com/500.php"
</script>
<meta http-equiv="refresh" content="0;URL='http://website.com/500.php'" />
The same exact problem would exist, just without it being 2 chain redirects instead it would just be 1 redirect using the following in the .htaccess file
ErrorDocument 400 http://website.com/400.php
ErrorDocument 401 http://website.com/401.php
ErrorDocument 403 http://website.com/403.php
ErrorDocument 404 http://website.com/404.php
ErrorDocument 500 http://website.com/500.php
Current Result: Redirecting to /500.php
Expected Result: Displaying 500.php in/on http://website.com/pages/1 without redirect
Is there a way to do it via root (could I get my hosts to do something, if so what?)
As the others have answered this should work:
ErrorDocument 500 /500.php
If you do not specify a full URL it just displays the page (an internal redirect), if you do specify the full URL, then it issues a redirect back to ths client. This is as described by Apache here: http://httpd.apache.org/docs/2.4/mod/core.html#errordocument
Note that when you specify an ErrorDocument that points to a remote URL (ie. anything with a method such as http in front of it), Apache HTTP Server will send a redirect to the client to tell it where to find the document, even if the document ends up being on the same server.
The fact that the above is not working for you means one of several things:
Can you check out those things?
Might also help to know what version of Apache you are on?
Also have you tried a plain 500.html file just to see if this works without redirecting? In theory a 500.php file should be fine too but would be interesting to narrow it down (and would also show if that change to 500.html was picked up and used or if it was still pointing to 500.php, which would perhaps show this was being picked up from other config than you think).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With