3

My CDN domain is set to www.mysite.com, and it reads from origin.mysite.com. mod_dir is enabled on apache, and so any request without a trailing slash is redirected with a 301 to the equivalent URL with a trailing slash.

The issue is that when someone goes to www.mysite.com/somepage I would expect them to get redirected to www.mysite.com/somepage/, but apache issues a redirect that includes the domain name too, so the redirect issued from apache is actually origin.mysite.com/somepage/ and the user now ends up on origin.mysite.com domain, and whole point of CDN is now lost.

I tried DirectorySlash off but that leads to numerous other problems. The solution I can think of is to have the redirect issue a relative URL, and I am not able to figure out if that is doable at all.

  • 1
    What does the apache httpd config look like ([`UseCanonicalName`](https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname), [`ServerName`](https://httpd.apache.org/docs/2.4/mod/core.html#servername), etc) and what is the value of the `Host` header sent by the CDN? – Håkan Lindqvist Jan 11 '16 at 07:16
  • `UseCanonicalName` is `Off` (default), and so `ServerName` doesn't matter that much. I fixed it like this - created a handler in my server that redirects requests coming to `/redirect/somepage` to `www.mysite.com/somepage/`, Then in my CDN i created a specific rule to look up requests specifically coming to `www.mysite.com/somepage` from a new origin, that has `/redirect` as the base url. The request now goes from `www.mysite.com/somepage` to `origin.mysite.com/redirect/somepage` which then redirects to `www.mysite.com/somepage/`. Convoluted, but works - I needed it only for specific paths – merlinbeard Jan 13 '16 at 07:57
  • Otherwise it sounds like turning `UseCanonicalName` **on** could have been a less convoluted solution, if the CDN changes the `Host` header compared to what the original client requested? – Håkan Lindqvist Jan 13 '16 at 08:11
  • True - But I was scared that setting the canonical name to same as the CDN domain might result in a infinite loop for some requests (not sure about it) - will need to test a bit more. It is probably the better solution in the longer term. Appreciate your advice :-) – merlinbeard Jan 14 '16 at 08:48

1 Answers1

0

I had the same problem.

I fixed the issue changing some wordpress parameters.

In the elasticbeanstalk I set the parameter CUSTOM_URL for my custom domain and in the file /var/www/html/wp-includes/load.php I set the parameters HTTP_HOST and SERVER_NAME to same value of CUSTOM_URL, and it resolved the redirect to elasticbeanstalk url.

$_SERVER['HTTP_HOST'] = $_SERVER['CUSTOM_URL'];

$_SERVER['SERVER_NAME'] = $_SERVER['CUSTOM_URL'];
BE77Y
  • 2,667
  • 3
  • 18
  • 23