We recently ran into an interesting problem with Network Solutions DNS redirects. As part of consolidating two sites into one and maintaining good SEO, we needed to enable redirects from all old URLs as well as non-www to www. Sounds simple, right?
URLs have a concept of representing a wide range of characters. In some cases, we need to use reserved characters like
# or character data like an empty space in a URL. This is done by substituting with
% + Hex character value.
URLs can link to an object on a page. The named anchor part of a URL, after the
#, is called the Fragment Identifier.
Generally, when you send a web request, web servers don’t need to know about a fragment identifier. This is more of the browsers concern. The web server can know about a fragment identifier, but it should transparently pass your request along so your browser can load the page with the defined fragment identifier.
URL Decoded Redirects
In the following example, we want to view all posts tagged with
#5thsummer. We can’t use the
# directly in our URL because it represents a tag in our application. The intention is to specifically not use it as a fragment identifier. We have to use a URL Encoded version of
# when accessing this tag in a URL.
➥ curl -I http://standardhotels.com/tagged/%235thsummer HTTP/1.1 301 Moved Permanently Server: Sun-ONE-Web-Server/6.1 Date: Fri, 09 Oct 2015 20:17:09 GMT Content-length: 122 Content-type: text/html Location: http://www.standardhotels.com/tagged/#5thsummer Connection: close
Network Solutions URL decodes
#5thsummer in the 301 redirect.
I expect a redirect to http://www.standardhotels.com/tagged/%235thsummer rather than http://www.standardhotels.com/tagged/#5thsummer. The redirect Network Solutions provides makes the
%235thsummer portion of our URL look like a fragment identifier.
I provided written and verbal descriptions of the problem to Network Solutions and was told the issue won’t be fixed. The support rep said our server was handling the redirect but that wasn’t likely (pssstt. our client doesn’t have a Sun-ONE-Web-Server or own the redirect host source IP). I was eventually told the workaround is to use another DNS provider.