我正在尝试使用PHP输出HTTP标头,根据Google的指南指定规范网址:Specify a canonical link in your HTTP header,格式如下:
Link: <http://www.example.com/downloads/white-paper.pdf>; rel="canonical"
然而,正在删除响应标头,结果为
Link: ; rel="canonical"
作为测试,我删除了左/右尖括号,结果是:
Link: http://www.example.com/downloads/white-paper.pdf; rel="canonical"
这让我觉得一些安全措施(PHP / Apache / Apache模块??)将标题内容视为HTML并且“帮助”#39;通过剥离它。
需要在标题中指定规范而不是简单地在&lt; head&gt;中指定规范的原因是文件是PDF。
这是一些测试代码来说明我在做什么:
<?php
header("link: <https://www.somedomain.com/>; rel=\"canonical\"");
print "this is a test";?>
apache中加载的模块列表是:
core_module(静态) log_config_module(静态) logio_module(静态) version_module(静态) mpm_prefork_module(静态) http_module(静态) so_module(静态) alias_module(共享) auth_basic_module(共享) authn_file_module(共享) authz_default_module(共享) authz_groupfile_module(共享) authz_host_module(共享) authz_user_module(共享) cgi_module(共享) deflate_module(共享) dir_module(共享) env_module(共享) expires_module(共享) mime_module(共享) negotiation_module(共享) pagespeed_module(共享) php5_module(共享) reqtimeout_module(共享) rewrite_module(共享) setenvif_module(共享) ssl_module(共享) status_module(共享)
请注意,未加载suhosin,因此可以排除.. 任何帮助确定可能正在修改标题的内容。
更新:我在几台不同的服务器上试过这个,到目前为止结果是一样的。
答案 0 :(得分:0)
这个问题的答案是我用来检查标题的工具是次要的(可能在将它们显示为HTML之前没有正确地转义标题):
特别是Chrome扩展程序&#34; CDN标题&amp;饼干&#34;以及我找不到的一些在线检查器。
Chrome的默认F12标题检查员会正确显示回复标题,如果我浪费了任何人的时间,我会道歉。