.htaccess Header 命令在使用转义 URL 时产生错误 500

.htaccess Header command produces error 500 when using escaped URLs

我有很多网页以 PDF 文件的形式单独存在。我被要求通过 .htaccess 告诉 Google PDF 文件的原始 HTML 版本 URL 是什么。

所有网页都可以使用 PHP 的 urlencode() 函数通过编码 URL 访问。 URL 包含公司名称。


工作示例,公司名称“很好的公司”:

<Files company123.pdf>
    Header append Link '<https://www.example.com/company/123/Very+good+company>; rel="canonical"'
</Files>

一旦公司名称包含需要编码的字符(例如德语变音符号),Web 服务器就会为整个目录发送错误 500:

非工作示例,公司名称“Very bäd cömpäny”:

<Files company456.pdf>
    Header append Link '<https://www.example.com/company/456/Very+b%C3%A4d+c%C3%B6mp%C3%A4ny>; rel="canonical"'
</Files>

我需要更改什么才能解决这个问题?文件包含编码的 URLs 是错误的吗?我是否必须定义未编码的 URL,例如 https://www.example.com/company/123/Very good companyhttps://www.example.com/company/123/Very bäd cömpäny

https://httpd.apache.org/docs/2.4/mod/mod_headers.html#header

value may be a character string, a string containing mod_headers specific format specifiers (and character literals), or an ap_expr expression prefixed with expr=

百分比字符是此格式说明符语法的一部分,因此您需要对其进行转义:

The following format specifiers are supported in value:  
Format   Description  
%%       The percent sign  
…        …

您需要在此处将所有 % 个字符加倍。