当请求 URL 中没有尾部斜杠时,我通常会添加它:
当用户请求时
https://example.com/blog
,应该重定向到https://example.com/blog/
当用户请求时
https://example.com/abc.jpg
,应该按原样提供
当服务器为 时Apache
,似乎通常由 完成mod_rewrite
。不幸的是,我们的系统包含一个CDN
(AWS CloudFront
),这在使用时会导致问题mod_rewite
:请求将被重定向到原始服务器,浏览器中的 URL 更改为原始服务器的 URL。
我也尝试了mod_alias
。RedirectMatch
但是看起来正则表达式很难完成复杂的匹配模式(事实上,它需要正则表达式而不是匹配模式)。
Apache
那么,对于+架构,通常如何添加尾部斜杠CDN
?
编辑:
感谢 Michael,事实证明将 CloudFront 中的 Host 标头列入白名单解决了我的问题:重定向的 URL 保持与旧 URL 相同(带有斜杠)。
答案1
这个答案并不能解决标题中的问题。但是,由于关键问题是如何重定向到正确的网址,我接受以下答案。此答案归功于 Michael
它重定向到原始 URL 的原因是由于 CloudFront 的标头转发。如果我们将Host
标头列入白名单,它将重定向到与用户请求相同的域。