Sling Reverse Mapping ignoring parameters and special characters like #

nivazdeent97086 13-08-2018

Hi,

I tried using sling reverse mapping to convert my outbound internal URL. URL is getting converted properly but parameters(?#etc) are getting removed.

For Example

+slingMapping

                    +sling:match:localhost.4602/(experience)

                      sling:internalRedirect:/content/we-retail/ca/en/$1

Inbound Request URL :http://localhost:4602/experience/summit-success-in-the-himalayas.html is resolving me successfully to the resource at /content/we-retail/ca/en/experience/summit-success-in-the-himalayas

But the outbound configured Link URL /content/we-retail/ca/en/experience/summit-success-in-the-himalayas.html#abcd is getting converted as http://localhost:4602/experience/summit-success-in-the-himalayas.html by shredding #abcd. Is this the expected behavior. If not how can we resolve this ?

Regards,

Nivazdeen.

Accepted Solutions (1)

Accepted Solutions (1)

Arun_Patidar
MVP
14-08-2018

Hi,

I checked again, For me I am able to convert links into short links using sling mapping but for me It is working as expected in AEM 6.3

Link Created from OOTB Text Component

Screen Shot 2018-08-16 at 12.12.00 AM.png

OUTPUT

Screen Shot 2018-08-16 at 12.14.38 AM.png

Thanks
Arun

Answers (8)

Answers (8)

nivazdeent97086 17-08-2018

Hi Arun,

I checked in vanilla instance and it is working for me. Later analyzed that there is a Rewriter service(org.apache.sling.rewriter) from master project affecting mine. Apologies for the confusion.

Regards,

Nivazdeen.

nivazdeent97086 13-08-2018

Hi,

The reverse mapping happens automatically following the resolve rules. I have mentioned the configuration which i used in the original question. I am not using sling output rewrite and not manipulating through component code.

Below is the link for the reference

Apache Sling :: Mappings for Resource Resolution

1547810_pastedImage_1.png

Regards,

Nivazdeen.

Arun_Patidar
MVP
13-08-2018

Hi,

I think the conversion is not automatic. you can access your image using both URLs. I don't understand how on page load /content/abc.html#identifier is converting into http://domain/abc.html

Are you using Sling Output Rewrite or you are manipulating path from components code?

It would be great if you can point us to the docs from where your are referring this?

Thanks

Arun

nivazdeent97086 13-08-2018

Hi Mac,

This use case is my project requirement. We have internal links with #identifier appended at the end. The links are getting converted properly but the #identifier at the end is getting truncated.

For Example. I have a image with URL. The URL is internal path and i configured like /content/abc.html#identifier. Once the page gets loaded the internal URL is getting mapped to http://domain/abc.html truncating the #identifier.

Regards,

Nivazdeen

nivazdeent97086 13-08-2018

Hi,

The reverse mapping happens automatically because of the configuration applied for sling mapping. No explicit reverse mapping configuration.

Regards,

Nivazdeen

Arun_Patidar
MVP
13-08-2018

Hi,

How are you converting outbound url /content/we-retail/ca/en/experience/summit-success-in-the-himalayas.html#abcd to inbound(short Url)?