相信大家都知道一个页面被永久不再使用的时候,都会重定向到新的一个页面,否则将会出现404 not found。一般情况下服务器端可以告知浏览器这个页面已经永久重定向到指定的页面,而永久重定向称作301重定向。

一般情况下服务端可以这么写

header(“HTTP/1.1 301 Moved Permanently”); header(“Location: http://www.crackedzone.com/front-end-project-bootstrap.html”);

如果当页面是html的时候,这时就无法使用服务器端的语言去告知浏览器改页面已经永久重定向了。
或者我们会使用

上面这种通过meta跳转的给搜索引擎传递的header 状态码一般是 200(页面被找到) 或者 302(暂时重定向)。

一般情况下这种方式需要在apache或者IIS中写规则,告诉浏览器这个html页面已经永久重定向了。
但是一般的服务商是不允许开放这个权限。但是404页面大部分服务器都会给予。

当页面未找到的时候默认使用一个404.php的文件,这个文件的命名可能是nofound.php之类的,但这都不影响我们的需求。

通过这个文件我们可以自定义出人性化的404页面。此时我们可以在页面的头部加上一个是否301的判断。

举一个简单的例子,我的博客上有一个不存在的页面 /test-not-found.html
我先测试一下的它的HTTP状态码,返回是404。

此时我在404.php的头部加上下面代码:

$host = $_SERVER[‘HTTP_HOST’]; $url = $host . $_SERVER[‘REQUEST_URI’];

if ( strpos($url, $host . ‘/test-not-found.html’) !== FALSE ) { header(“HTTP/1.1 301 Moved Permanently”); header(“Location: “ . $host . ‘/front-end-project-bootstrap.html’); exit(); }

// 下面404页面内容

我们再查询一次他的HTTP状态码

由此可见,这个页面已经返回301状态码。

上述例子,告诉我们,当访问/test-not-found.html 这个文件出现404未找到的时候(也就是这个文件必须不存在,我们可以放心删除它)。
这时候我们在404页面中告诉浏览器说,改页面已经301重定向到/front-end-project-bootstrap.html

查看HTTP状态可以使用站长工具:http://tool.chinaz.com/pagestatus/

Nginx 自动禁止爬虫IP采集

### 背景最近我们有一个公开服务提供给客户查询关键词的热度值,由于这个API做在官方网站上,自然没有用户登陆,也没有很高查询成本,所以设计上没有任何鉴权无法进行身份认定,于是就被一个爬虫开了超高并发请求,直接后端的AWS Tomcat CPU被用尽,导致无法响应。爬虫显然...… Continue reading

Redis原子性事务Lua应用

Published on June 28, 2020