吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 969|回复: 8
收起左侧

[已解决] 关于 php header 请求

[复制链接]
zhansh 发表于 2021-10-7 15:26
本帖最后由 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();
//上面执行完跳转正确
}

请教大神,红色的两种跳转方式有什么不同呀?对搜索引擎效果是否一样?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fisher 发表于 2021-10-7 15:58
用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/function.header.php
judgecx 发表于 2021-10-7 16:23
fisher 发表于 2021-10-7 15:58
用location默认都返回302了,你应该先看下手册里面header到底怎么用
https://www.php.net/manual/zh/funct ...

大佬能不能看看我的帖子
 楼主| zhansh 发表于 2021-10-7 19:49
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 19:54
本帖最后由 zhansh 于 2021-10-7 20:02 编辑
judgecx 发表于 2021-10-7 16:23
大佬能不能看看我的帖子

朋友再指导下,搞得晕的,就是想将这些链接跳转到 404,那最终应该怎么写好呢?

就是想让搜索引擎删除快照
 楼主| zhansh 发表于 2021-10-7 20:16
大概明白了,用  header('HTTP/1.1 404 Not Found'); 的时候返回的是 php 内部的 404 页面,而不是 IIS 内的 404,原来以为php 会返回到 IIS 的 404
 楼主| zhansh 发表于 2021-10-7 20:28
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:29
本帖最后由 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

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; // 如果存在上层路由,建议直接宣布死刑

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
zhansh + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| zhansh 发表于 2021-10-8 20:49
fisher 发表于 2021-10-8 16:29
[md]如果你不需要在CGI模式下运行,用header("HTTP/1.0 404 Not Found");就够了.
另外header("HTTP/1.0  ...

谢谢朋友,我的就是 CGI 运行的,我再学习下你的代码,太专业了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表