Ros*_*nda -2 php header http-response-codes
我正在使用php脚本将用户从mysite.com/id=123发送到mysite.com/my-id-title
我可以使用.htaccess文件重写URL(这当然是自然的解决方法,但是鉴于url的替换信息不在url提供的原始参数中,而是需要数据库查询(如您所见)在示例中)我不能仅仅使用mod_rewrite来做到这一点,而且使事情变得更加困难的是,我没有访问Apache的权限,我只能使用.htaccess。
因此,我认为,作为一种变通办法,是通过php生成一条规则,该规则确实可以使用header('Location:'。$ reenvioA);来工作。
问题是PHP生成的响应代码是302,而不是200。响应响应是200,这是我需要创建站点地图并出于SEO的原因。
因此,为了防止这种情况,我考虑过告诉php我想要200个代码,因此我强制执行。
我尝试了很多方法:
header("HTTP/1.1 200 OK");
header('Location:'.$reenvioA);
Run Code Online (Sandbox Code Playgroud)
也许在Location标头之前和之后强制使用它?
header("HTTP/1.1 200 OK");
header('Location:'.$reenvioA);
header("HTTP/1.1 200 OK");
Run Code Online (Sandbox Code Playgroud)
然后,我尝试使用其可选参数进行操作:
header('Location:'.$reenvioA, false, 200);
Run Code Online (Sandbox Code Playgroud)
也许只是让第二个论点保持正确?
header('Location:'.$reenvioA, true, 200);
Run Code Online (Sandbox Code Playgroud)
然后只需使用响应本身设置变量:
header('Location:'.$reenvioA);
http_response_code(200);
Run Code Online (Sandbox Code Playgroud)
到目前为止,都没有任何效果,因为一旦我强制响应,该页面就不会加载。似乎即使在header(Location:url)之后设置了响应代码,php也不会获取该页面。

我能做什么?
您无法执行此操作,因为您正在重定向,因此只能使用3xx响应代码,任何不在3xx范围内的响应代码将不起作用。
(如果可以选择,则可以使用JS重定向并获得200,而无需更改任何标头)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |