2013-04-23 63 views
2

我在重定向导致域更改WordPress重定向时遇到一些麻烦。Wordpress MU Cloudfront。跟踪斜杠重定向到错误的域

例子: 网站 - noncdn.somedomain.com CDN URL - www.domain.com

当我打开链接瓦特/ OA斜线有301重定向: 去这里:www.domain。转到此处:noncdn.somedomain.com/page/

由于Cloudfront正在使用Origin Domain访问服务器,服务器甚至不知道请求是从其他域进入的。

如何强制这301使用FQDN W/CDN正确域名,而不是做一个相对重定向?

我已经添加了这个让网站和图片的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; 
} 

任何帮助,非常感谢!

谢谢!

回答

1

我是跟踪一个非常类似的问题,与上运行Nginx的一个标准的静态网站的的Cloudfront分布的一段时间。症状是一样的,链接以斜线(例如www.acme.com/products/)正常工作,但省略了斜杠导致用户被重定向到原点。

的问题是,web服务器软件本身没有正确尝试解析URI,并转而使用重定向到URL它可以成为响应。您可以通过使用curl对您的网站测试:

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

CloudFront的是返回正是你的服务器的回报,在这种情况下,301重定向你的源URL。 CloudFront并不是遵循重定向和缓存,而是缓存重定向本身。纠正这种情况的唯一方法是确保您的原点正确处理请求,并且不回应301.

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

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

你想成为确保try_files具有残局,避免重定向循环,这将导致服务器返回500服务器错误时请求不存在的URL。在这种情况下,/index.shtml是最后一次尝试和失败,它将返回一个404.

我知道这并不能准确地回答你的问题,但你是我发现时的少数几个搜索“没有将斜线重定向到原点的云端”,并且你一年没有答案,所以我认为值得发送回复。

0

我有同样的问题。

我固定改变某些参数的WordPress的问题。

在elasticbeanstalk我设置的参数CUSTOM_URL为我的自定义域和文件/var/www/html/wp-includes/load.php 在我设定的参数HTTP_HOSTSERVER_NAMECUSTOM_URL相同的价值,它解决了重定向到URL elasticbeanstalk。

$_SERVER['HTTP_HOST'] = $_SERVER['CUSTOM_URL']; 
$_SERVER['SERVER_NAME'] = $_SERVER['CUSTOM_URL']; 
+0

似乎不是理想的编辑WordPress核心文件,如load.php,可能会覆盖未来的更新。有任何其他方式来实现这样的事情? – Jordan 2016-08-18 01:28:31