所以我的一些 PHP 文件中有这些标题:
<?php
header('Content-Type: text/html; charset=UTF-8');
header('Content-Style-Type: text/css');
header('Content-Script-Type: application/javascript');
header('HTTP/1.1 200 OK');
header('Content-language: en-US');
header('X-Powered-By: PHP/5.2.17');
header('Last-Modified: Tue, 01 Jan 2013 00:00:00 GMT');
header('Cache-Control: no-store, no-cache, max-age=0, must-revalidate');
header('Pragma: no-store, no-cache, max-age=0, must-revalidate');
header('Expires: Tue, 01 Jan 2013 00:00:00 GMT');
?>
Run Code Online (Sandbox Code Playgroud)
如何在我的 .htaccess 文件中设置它们?(应该仅适用于特定文件),这是我到目前为止所得到的:
<FilesMatch "^(index.php|about.php|contact.php)$">
# HTTP Headers should be set in here
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
您需要安装 mod_headers,否则可能会收到错误 500。您可以将 headers 设置包装在条件中以检查 mod_headers 是否存在。
<FilesMatch "\.(html|htm|js|css)$">
<ifModule mod_headers.c>
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Expires "Thu, 1 Jan 2015 05:00:00 GMT"
</ifModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
您还可以取消设置标题。例如,如果您位于负载平衡器后面,则真实的访问者 IP 可以以您不想向应用程序公开的自定义标头的形式传递。
Header unset Real-Visitor-IP
Run Code Online (Sandbox Code Playgroud)
除了过期和 etag 以及特定于 Web 服务器的自定义标头之外,您不应该在 Web 服务器级别篡改标头。它们中的大多数应该在应用程序级别进行管理,如果您向它们传递更改的内容类型,您将阻止某些框架正常工作。