关于 php header 请求
本帖最后由 zhansh 于 2021-10-10 16:02 编辑//http://*/?hot=dhqcie/uplmzk.xlsx
if(!empty($hot) && !is_numeric($hot)){
header('HTTP/1.1 404 Not Found');// 可以执行
header('location: ./404/404.html');// 可以执行
}
//http://*/index.php/index.php?pvzebz/fjroti.pptx
$uri = $_SERVER['REQUEST_URI'];
if(!empty($uri) && strpos($uri, 'pptx') != false){
//header('HTTP/1.1 404 Not Found');不能执行
//header('location: ./404/404.html'); 不能执行
// 执行完跳转到 http://*/index.php/404/404b.htm
header('status: 404 Not Found');
include('./404/404b.htm');
exit();
//上面执行完跳转正确
}
请教大神,红色的两种跳转方式有什么不同呀?对搜索引擎效果是否一样? 用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/function.header.php
fisher 发表于 2021-10-7 15:58
用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/funct ...
大佬能不能看看我的帖子 fisher 发表于 2021-10-7 15:58
用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/funct ...
那就是说只要用一句
header('HTTP/1.1 404 Not Found');
就行了是吧,网上搜出来的基本都是写两三行的代码,不知道什么意思 本帖最后由 zhansh 于 2021-10-7 20:02 编辑
judgecx 发表于 2021-10-7 16:23
大佬能不能看看我的帖子
朋友再指导下,搞得晕的,就是想将这些链接跳转到 404,那最终应该怎么写好呢?
就是想让搜索引擎删除快照 大概明白了,用header('HTTP/1.1 404 Not Found'); 的时候返回的是 php 内部的 404 页面,而不是 IIS 内的 404,原来以为php 会返回到 IIS 的 404 fisher 发表于 2021-10-7 15:58
用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/funct ...
header('HTTP/1.1 404 Not Found');
header('status: 404 Not Found');
include('./404/404b.htm');
exit();
谢谢朋友指导, 这样应该好多了 本帖最后由 fisher 于 2021-10-8 16:35 编辑
zhansh 发表于 2021-10-7 20:28
header('HTTP/1.1 404 Not Found');
header('status: 404 Not Found');
include('./404/404b.htm'); ...
如果你不需要在CGI模式下运行,用header("HTTP/1.0 404 Not Found");就够了.
另外header("HTTP/1.0 404 Not Found");这个写法也不太好。文档里面也提到了这一句
> I strongly recommend, that you use
>
> header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
>
> instead of
>
> header("HTTP/1.1 404 Not Found");
>
> I had big troubles with an Apache/2.0.59 (Unix) answering in HTTP/1.0 while I (accidentially) added a "HTTP/1.1 200 Ok" - Header.
可以适当改一下,兼容1.1和2
```php
stripos(php_sapi_name(),'cgi') === 0 ? header('Status: 404 Not Found',true):header(($_SERVER['SERVER_PROTOCOL'] ?? 'HTTP/1.1').' 404 Not Found');
include('./404/404b.htm');
die; // 如果存在上层路由,建议直接宣布死刑
``` fisher 发表于 2021-10-8 16:29
如果你不需要在CGI模式下运行,用header("HTTP/1.0 404 Not Found");就够了.
另外header("HTTP/1.0...
谢谢朋友,我的就是 CGI 运行的,我再学习下你的代码,太专业了!{:1_921:}
页:
[1]