Redirecting to frontpage after 404 error in PHP

拥有回忆 提交于 2019-12-11 18:29:50

问题


I have a php web page that now uses custom error pages when a page is not found. The custom error pages are included in PHP.

So when somebody types in an URL that does not exists I just include an error page, and the error page starts with:

<?php header("HTTP/1.1 404 Not> Found"); ?>

This also tells crawlers that the page does not exist.

Now I have set up a new system. When a user types a wrong url, the user is sent back to the frontpage and a message is displayed on the frontpage. I redirect to the frontpage like this:

header('Location:' . __TINY_URL . '/');

Now the problem is PHP just sends back a 200 code, page found.

How can I mix these two to create a 404 code on the frontpage.

And is this overall a nice way of presenting and error page.


回答1:


Redirecting after an error is not a very good idea. It's especially annoying for people who like to type in/edit URLs, because if you make a typo, you'll get redirected to some arbitrary page and have to start over.

I suggest you don't do this at all. If you want to, you can have your error page look like your front page though, albeit I think that'd be somewhat confusing.




回答2:


It's giving you a 200 code because you are redirecting to a page that returns a 200 code. The way ive done this before is to send the 404 header then load the 404 view.

header("HTTP/1.0 404 Not Found");
include("four_o_four.php");



回答3:


You can add this into your htaccess

ErrorDocument 404 http://www.yourdomain.com/404.php

or

ErrorDocument 404 http://www.yourdomain.com/index.php #Your homepage

This will send the intials 404 header



来源:https://stackoverflow.com/questions/2828030/redirecting-to-frontpage-after-404-error-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!