4

I created custom 404 error page called error.php, now I want to display the error.php content in user entered url.like this link: http://www.youtube.com/asdfasfsd

This is my htaccess code:

ErrorDocument 404 https ://localhost/path/error.php

I want to show the error.php content in same URL without redirect to error.php page

if user typed invalid url (for example:https ://localhost/path/nnn.php)

current result:redirecting to error.php

expected result:display error.php content in https ://localhost/path/nnn.php

My full htaccess code:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteRule index.html$ index.php [L]
RewriteRule service.html$ service.php [L]
RewriteRule ^([^/]*)\.html$ about.php?pid=$1 [L]
RewriteRule ^cont/([^/]*)\.html$ contact-inner.php?tid=$1 [L]
RewriteRule ^contact/([^/]*)/([^/]*)\.html$ contact-page.php?tid=$1&ona=$2 [L]
RewriteRule ^about/([^/]*)\.html$ about-inner.php?oid=$1 [L]
RewriteRule ^service/([^/]*)/([^/]*)\.html$ service-page.php?oid=$1&ona=$2 [L]



ErrorDocument 404 https://localhost/ezhil/path/public_html/error.php

<Files 403.shtml>
order allow,deny
allow from all
</Files>

deny from 117.202.102.84
deny from 58.68.25.210

deny from 91.200.13.112
deny from 86.128.130.170
deny from 91.200.13.7
deny from 173.208.206.90
4
  • you can include error.php in same page... Commented Jun 6, 2014 at 11:40
  • this must be done using .htaccess. if no RewriteRule is met, then execute error.php. The url will stay the same, but the error.php will be executed. no time for me to answer now, lunch break :P Commented Jun 6, 2014 at 11:49
  • This question appears to be off-topic because it is about configuring apache, not about programming (in php) Commented Jun 6, 2014 at 12:39
  • Yes, it is not specific to PHP. But "configuring Apache" is something different to me. Configuring Apache means to me editing /etc/apache2/ (as server administrator), but changing a .htaccess is an edit of the web application. The .htaccess file is a part of a website resp. a web-application (like a CMS), and therefore it does count to web-development in my opinion. Commented Jun 6, 2014 at 12:45

4 Answers 4

7

Please remove your ErrorDocument rule and replace it with following code :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ error.php [L]

A suggestion by the way: You should put a [L] behind RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} , so that no other rule will override the HTTPS-enforcement.

Your .htaccess will then look like this:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

RewriteRule index.html$ index.php [L]
RewriteRule service.html$ service.php [L]
RewriteRule ^([^/]*)\.html$ about.php?pid=$1 [L]
RewriteRule ^cont/([^/]*)\.html$ contact-inner.php?tid=$1 [L]
RewriteRule ^contact/([^/]*)/([^/]*)\.html$ contact-page.php?tid=$1&ona=$2 [L]
RewriteRule ^about/([^/]*)\.html$ about-inner.php?oid=$1 [L]
RewriteRule ^service/([^/]*)/([^/]*)\.html$ service-page.php?oid=$1&ona=$2 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ error.php [L]


<Files 403.shtml>
order allow,deny
allow from all
</Files>

deny from 117.202.102.84
deny from 58.68.25.210

deny from 91.200.13.112
deny from 86.128.130.170
deny from 91.200.13.7
deny from 173.208.206.90
Sign up to request clarification or add additional context in comments.

11 Comments

jesus christ or whatever, dont just copy from other questions stackoverflow.com/a/2777272/953684. there are some paths in there (!^subs) from the other question. please pay attention when you answer. you could just link to that answer through a comment.
I had the idea with mod_rewrite before you commented above. Don't be that angry just because I have overseen that detail.
there is no point which had "first" the idea. the point is you copy and paste something from ANOTHER question, that means its GARBAGE for THIS question. if you can't understand why this is bad, i can't help you more. and for the "overseen the detail": the DETAIL makes the difference. if you dont have time for a detailed answer, just post a link to the other answer for further investigation, or get ready for downvotes for "no research effort".
Stop being that aggresive to new users. I am willing to edit my answers. And leave jesus out of your comments, this offends me.
i have no idea any help?
|
1

Modify the line in your .htaccess file. Just use path and filename (Without host)

ErrorDocument 404 /path/error.php

It worked for me.

Comments

0

You may need to tweak your existing htaccess a bit for this to work

RewriteEngine On

# your existing rules. please note the [L] after each rule 
RewriteRule ^main$ index.php [L]
RewriteRule ^about-us$ aboutus.php [L]
RewriteRule ^whatever$ whatever.php [L]

# anything else that ends with .php
RewriteRule .*\.php$ error.php

as soon a RewriteRule is met, further execution is stopped by [L]. Then if the request ends with .php the error.php will be executed.

Comments

0

Just add code like this in your .htaccess

    ErrorDocument 404 "<script>document.write(atob('[Your Html code convert to base64string]'))</script>"

For Example

    ErrorDocument 404 "<script>document.write(atob('PCFET0NUWVBFIGh0bWw+CjxoZWFkPgoJPG1ldGEgY2hhcnNldD0idXRmLTgiPgoJPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4KCTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+Cgk8IS0tIFRoZSBhYm92ZSAzIG1ldGEgdGFncyAqbXVzdCogY29tZSBmaXJzdCBpbiB0aGUgaGVhZDsgYW55IG90aGVyIGhlYWQgY29udGVudCBtdXN0IGNvbWUgKmFmdGVyKiB0aGVzZSB0YWdzIC0tPgoKCTx0aXRsZT40MDQgTm90IEZvdW5kPC90aXRsZT4KCgk8IS0tIEdvb2dsZSBmb250IC0tPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU1vbnRzZXJyYXQ6NTAwIiByZWw9InN0eWxlc2hlZXQiPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PVRpdGlsbGl1bStXZWI6NzAwLDkwMCIgcmVsPSJzdHlsZXNoZWV0Ij4KCgk8c3R5bGU+CiogewogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmJvZHkgewogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAwOwp9Cgojbm90Zm91bmQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDEwMHZoOwp9Cgojbm90Zm91bmQgLm5vdGZvdW5kIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwp9Cgoubm90Zm91bmQgewogIG1heC13aWR0aDogNzY3cHg7CiAgd2lkdGg6IDEwMCU7CiAgbGluZS1oZWlnaHQ6IDEuNDsKICBwYWRkaW5nOiAwcHggMTVweDsKfQoKLm5vdGZvdW5kIC5ub3Rmb3VuZC00MDQgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICBoZWlnaHQ6IDE1MHB4OwogIGxpbmUtaGVpZ2h0OiAxNTBweDsKICBtYXJnaW4tYm90dG9tOiAyNXB4Owp9Cgoubm90Zm91bmQgLm5vdGZvdW5kLTQwNCBoMSB7CiAgZm9udC1mYW1pbHk6ICdUaXRpbGxpdW0gV2ViJywgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDE4NnB4OwogIGZvbnQtd2VpZ2h0OiA5MDA7CiAgbWFyZ2luOiAwcHg7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBiYWNrZ3JvdW5kLWNvbG9yOiBCbGFjazsKICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7Cn0KCi5ub3Rmb3VuZCBoMiB7CiAgZm9udC1mYW1pbHk6ICdUaXRpbGxpdW0gV2ViJywgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDI2cHg7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBtYXJnaW46IDA7Cn0KCi5ub3Rmb3VuZCBwIHsKICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNTAwOwogIG1hcmdpbi1ib3R0b206IDBweDsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9Cgoubm90Zm91bmQgYSB7CiAgZm9udC1mYW1pbHk6ICdUaXRpbGxpdW0gV2ViJywgc2Fucy1zZXJpZjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQ6ICM1YzkxZmU7CiAgcGFkZGluZzogMTBweCA0MHB4OwogIGZvbnQtc2l6ZTogMTRweDsKICBmb250LXdlaWdodDogNzAwOwogIGJvcmRlci1yYWRpdXM6IDFweDsKICBtYXJnaW4tdG9wOiAxNXB4OwogIC13ZWJraXQtdHJhbnNpdGlvbjogMC4ycyBhbGw7CiAgdHJhbnNpdGlvbjogMC4ycyBhbGw7Cn0KCi5ub3Rmb3VuZCBhOmhvdmVyIHsKICBvcGFjaXR5OiAwLjg7Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKICAubm90Zm91bmQgLm5vdGZvdW5kLTQwNCB7CiAgICBoZWlnaHQ6IDExMHB4OwogICAgbGluZS1oZWlnaHQ6IDExMHB4OwogIH0KICAubm90Zm91bmQgLm5vdGZvdW5kLTQwNCBoMSB7CiAgICBmb250LXNpemU6IDEyMHB4OwogIH0KfQoKCTwvc3R5bGU+CgoJPCEtLSBIVE1MNSBzaGltIGFuZCBSZXNwb25kLmpzIGZvciBJRTggc3VwcG9ydCBvZiBIVE1MNSBlbGVtZW50cyBhbmQgbWVkaWEgcXVlcmllcyAtLT4KCTwhLS0gV0FSTklORzogUmVzcG9uZC5qcyBkb2Vzbid0IHdvcmsgaWYgeW91IHZpZXcgdGhlIHBhZ2UgdmlhIGZpbGU6Ly8gLS0+Cgk8IS0tW2lmIGx0IElFIDldPgoJCSAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vb3NzLm1heGNkbi5jb20vaHRtbDVzaGl2LzMuNy4zL2h0bWw1c2hpdi5taW4uanMiPjwvc2NyaXB0PgoJCSAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vb3NzLm1heGNkbi5jb20vcmVzcG9uZC8xLjQuMi9yZXNwb25kLm1pbi5qcyI+PC9zY3JpcHQ+CgkJPCFbZW5kaWZdLS0+Cgo8L2hlYWQ+Cgo8Ym9keT4KCgk8ZGl2IGlkPSJub3Rmb3VuZCI+CgkJPGRpdiBjbGFzcz0ibm90Zm91bmQiPgoJCQk8ZGl2IGNsYXNzPSJub3Rmb3VuZC00MDQiPgoJCQkJPGgxPjQwNDwvaDE+CgkJCTwvZGl2PgoJCQk8aDI+T3BzcyEgVGhlIHJlcXVlc3RlZCBVUkwgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L2gyPgoJCQk8cD5UaGF0J3MgYWxsIHdlIGtub3cuPC9wPgoJCQk8YSBocmVmPSIjIj5HbyBUbyBIb21lcGFnZTwvYT4KCQk8L2Rpdj4KCTwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg=='))</script>"

It's worked for me.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.