gpt4 book ai didi

amazon-cloudfront - WordPress MU Cloudfront。尾部斜杠重定向转到错误的域

转载 作者:行者123 更新时间:2023-12-04 18:10:02 27 4
gpt4 key购买 nike

我在 wordpress 重定向中的重定向导致域更改时遇到了一些问题。

例子:网站 - noncdn.somedomain.comCDN 网址 - www.domain.com

当我打开没有尾部斜杠的链接时,会出现 301 重定向:去这里:www.domain.com/page带你到这里:noncdn.somedomain.com/page/

由于 Cloudfront 使用源域访问服务器,服务器甚至不知道请求来自不同的域。

我如何强制此 301 使用具有正确 CDN 域的 FQDN 而不是进行相对重定向?

我已经添加了这个,以便网站上的链接和图像都从 Cloudfront 域加载,但它似乎对重定向行为没有影响:

    add_filter('home_url','home_url_cdn',10,2);

function home_url_cdn( $path = '', $scheme = null ) {
return get_home_url_cdn( null, $path, $scheme );
}

function get_home_url_cdn( $blog_id = null, $path = '', $scheme = null ) {
$cdn_url = get_option('home');
if(get_option('bapi_site_cdn_domain')){
$cdn_url = get_option('bapi_site_cdn_domain');
}
$home_url = str_replace(get_option('home'),$cdn_url,$path);
//echo $home_url;

return $home_url;
}

非常感谢任何帮助!

谢谢!

最佳答案

一段时间以来,我一直在使用在 Nginx 上运行的标准静态网站的 Cloudfront 分发版来追踪一个非常相似的问题。症状是一样的,带尾部斜杠的链接(例如 www.acme.com/products/)工作正常,但省略尾部斜杠会导致用户被重定向到源。

问题是网络服务器软件本身没有正确地尝试解析 URI,而是通过重定向到它可以提供的 URL 来响应。您可以通过对您的站点使用 curl 来对此进行测试:

$ curl http://myhost.com/noslashurl
HTTP/1.1 301 Moved Permanently [...]

CloudFront 返回的正是您的服务器返回的内容,在本例中为 301 重定向到您的原始 URL。 CloudFront 不遵循重定向并缓存它,而是缓存重定向本身。纠正此问题的唯一方法是确保您的来源正确处理请求并且不会以 301 响应。

在我的特殊情况下,这意味着更新 try_files directive我在 nginx 配置中的位置。正如我提到的,这是一个静态站点,所以我的 try_files 变成了:

location / {
[...]
try_files $uri $uri/index.shtml /index.shtml =404;
}

您要确保 try_files 有一个结局,以避免重定向循环,这将导致您的服务器在请求不存在的 URL 时返回 500 服务器错误。在这种情况下,/index.shtml 是最后的尝试,如果失败,它将返回 404。

我知道这并不能准确回答您的问题,但您的问题是我在搜索“不带尾随斜杠的云端重定向到源”时发现的极少数问题之一,而且您已经一年没有答案了,所以我认为发送回复是值得的。

关于amazon-cloudfront - WordPress MU Cloudfront。尾部斜杠重定向转到错误的域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16172015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com