How to use external redirects in Adobe Experience Manager?

Sometimes we require to redirect request to old or deprecated pages in our sites to new versions of that page …

Sometimes we require to redirect request to old or deprecated pages in our sites to new versions of that page or to a totaly different site. For instance, lets suppose that we decided to redirect the page http://my.site.com/myoldpage to http://my.new.site/mynewpage. In that case, because the new page is in a different domain, we need an external redirect which is basically a Sling mapping.

Understanding sling mappings

The sling mappings expose properties that allow us to modify the way a resource is resolved. Said properties are:

  1. sling:match. Defines a partial regular expresion which be used to macth the incoming request instead of the resource name.
  2. sling:redirect. The value of this property is sent back in the Location header in the response, which causes a redirection.
  3. sling:status. The value of this property is sent back as the HTTP status to the client when we use the sling:redirect property. It defaults to 302, but you can use 300 (Multiple Choices), 301 (Moved Permanently), 303 (See Other), and 307 (Temporary Redirect).
  4. sling:internalRedirect. Multi-value property. It modifies the path internally so the path specifed in sling:match can resolve to a given resource.
  5. sling:alias. Adds an alias for a page, e.g content/myoldpage to content/mynewpage.

Creating an external redirect

First we should create the mapping under the /etc/map/http node. We have two options to create the node, we could use the namespace as the name e.g. “localhost.4502” or we can use another custom name e.g. “localhost_any” in conjunction with the “sling:match” property. For this example, we will use the first approach.

  1. Create a folder under /etc/map/http with the name “localhost.4502”.
  2. Create a node inside that folder with any name you want e.g. “togoogle”, the type will be “sling:Mapping”
  3. Add the following properties:
    • “sling:match” with the URL you want to be redirected, e.g. “content/oldcontent.html”
    • “sling:internalRedirect” with the URL of the page you want to redirect to, e.g. “https://google.com”
    • “sling:status” choose any of the suported statuses, in thi case we will choose 301

slings

What if the page I want to redirect to is in the same server and domain?

In that case it’s not necessary to create an external redirect. Instead you can:

  1. Use a vanity url
  2. Specify and alias with a Sling mapping (sling:alias) so content/myoldpage can be considered an alias of content/mynewpage
  3. Use an internal redirect to transparently redirect content/mynewpage to content/myoldpage. Please check my previous post and its second part for more information about internal redirects.

Well, that was it for today! thanks for reading.

Keep reading

More >