Issues with etc/map redirect

Avatar

Avatar

v1101

Avatar

v1101

v1101

05-01-2021

Hello Community - I need your suggestion related to etc/map redirect. I am trying to implement the below redirect

 

PS: We don't want to make any changes in Apache.

 

DNS: www.prepaid.test.com/prepaidcards/student.html -> www.prepaid.test.com/content/test/en/account/cardenrollment.html

 

Existing setup is CDN -> Dispatcher -> Publish Instance

 

I have the following entries but the redirect is not happening. I have also verified in /system/console/jcrresolver. I wanted to implement it as a 301 redirect. Are these entries correct?

Redirect2.png

 

Also I have another question. I have kept the domain name for sling:Mapping. is that something that we need to follow the exact name of the domain/website or we can have any name? Also do I need to specify the port no. in the node name or not? Please advise.

Redirect3.png

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

Albin_Issac

MVP

Avatar

Albin_Issac

MVP

Albin_Issac
MVP

06-01-2021

Are you trying for an external redirect(sling:redirect) or internal rewrite(sling:internalRedirect)? Also check AEM is reciving direct HTTPS traffic or X-Forwarded* headers, if not create the et/map configurations under HTTP node.

Refer to https://medium.com/tech-learnings/adobe-experience-manager-aem-implementing-custom-redirect-vanity-u... for more details.

Refer to https://techforum.medium.com/configure-sling-mapping-for-resource-resolution-in-adobe-experience-man... for more details on enabling etc/mapping.

Regards

Albin I

 

 

v1101
@Albin_Issac - Thanks for your inputs. I tried with sling:internalRedirect. Can you tell me how to check HTTPS traffic or X-Firwarded header? Also what property should I use it for the headers?
Albin_Issac
Try adding the maapings under http node, if that works. The X-Forwarded headers will be sent by Load Balancers if the SSL is terminated at Load Balancer.
v1101
@Albin_Issac - I have added the mapping under http node as well but the redirect is not happening. Currently I have two modes under map - http & https
Albin_Issac
Can you post the JSON for the mapping?
v1101
@Albin_Issac - Please find below. { "jcr:primaryType": "sling:Folder", "jcr:createdBy": "admin", "hidden": "true", "jcr:created": "Fri Feb 07 2020 05:31:05 GMT-0600", "http": { "jcr:primaryType": "sling:Folder", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "jcr:created": "Fri Feb 07 2020 05:31:05 GMT-0600", "cq:lastReplicated": "Tue Jan 05 2021 14:06:49 GMT-0600", "prepaid.test.com": { "jcr:primaryType": "sling:Mapping", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "jcr:created": "Tue Jan 05 2021 10:16:23 GMT-0600", "cq:lastReplicated": "Tue Jan 05 2021 12:27:23 GMT-0600", "test-redirect": { "jcr:primaryType": "sling:Mapping", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "sling:status": 301, "jcr:created": "Tue Jan 05 2021 10:16:23 GMT-0600", "cq:lastReplicated": "Wed Jan 06 2021 11:24:33 GMT-0600", "sling:match": "/prepaidcards/student.html", "sling:internalRedirect": "/content/test/en/account/enrollment.html" } } }, "https": { "jcr:primaryType": "sling:Folder", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "jcr:created": "Fri Feb 07 2020 05:31:05 GMT-0600", "cq:lastReplicated": "Tue Jan 05 2021 12:27:20 GMT-0600", "prepaid.test.com": { "jcr:primaryType": "sling:Mapping", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "jcr:created": "Tue Jan 05 2021 10:16:23 GMT-0600", "cq:lastReplicated": "Tue Jan 05 2021 12:27:30 GMT-0600", "test-redirect": { "jcr:primaryType": "sling:Mapping", "jcr:mixinTypes": [ "cq:ReplicationStatus" ], "jcr:createdBy": "admin", "cq:lastReplicationAction": "Activate", "cq:lastReplicatedBy": "admin", "sling:status": 301, "jcr:created": "Tue Jan 05 2021 10:16:23 GMT-0600", "cq:lastReplicated": "Tue Jan 05 2021 13:37:39 GMT-0600", "sling:match": "/prepaidcards/student.html", "sling:internalRedirect": "/content/test/en/account/enrollment.html" } } } }
Albin_Issac

Try to modify the sling:match as sling:match - prepaidcards/student.html (removed the slash). Also, note sling:redirect instead of sling:internalRedirect with complete URL should used if you want to redirect the user to specific URL in browser.

v1101
Thanks so much for your inputs. I have changed the entries like below in the publish instances. sling:match - prepaidcards/student.html, sling:redirect - /content/test/en/account/enrollment.html The Resource Resolver output is below. Configuration Test: https://prepaid.test.com/prepaidcards/student.html RedirectResource, type=sling:redirect, path=/prepaidcards/student.html, values={sling:target=/content/test/en/account/enrollment.html, sling:status=301} The redirect is still not working. Is there a reason, I need to specify sling:redirect instead of sling:internalRedirect? We are still pointing to the page which is also in the same domain.t
v1101
If I check the "Resolver Map" Entries, it shows the below : Pattern: ^https/prepaid.test.com/prepaidcards.com.443/prepaidcards/student.html Replacement: /content/test/en/account/enrollment.html
Albin_Issac

Working JSON

 

{
"jcr:primaryType": "sling:Folder",
"jcr:createdBy": "admin",
"hidden": "true",
"jcr:created": "Wed Oct 16 2019 20:55:35 GMT-0500",
"http": {
"jcr:primaryType": "sling:Folder",
"jcr:createdBy": "admin",
"jcr:created": "Wed Oct 16 2019 20:55:35 GMT-0500",
"prepaid.test.com": {
"jcr:primaryType": "sling:Mapping",
"jcr:createdBy": "admin",
"jcr:created": "Wed Jan 06 2021 12:45:10 GMT-0600",
"test-redirect": {
"jcr:primaryType": "sling:Mapping",
"jcr:createdBy": "admin",
"sling:redirect": "https://www.albinsblog.com",
"jcr:created": "Wed Jan 06 2021 12:46:07 GMT-0600",
"sling:match": "prepaidcards/student.html"
}
}
}
}

v1101
Not sure if I have anything that is incorrect in the setup.
v1101
@Albin_Issac - Thank you so much for your wonderful inputs. After adding the content/test/en in the sling:match, the redirect started working. Can you please provide your inputs for the below? 1. Currently I don't have any page specific rewrite rules in apache level. Even after I delete the folders underneath the etc/map/ in all publish instances and verified, I still some of the redirects are still working. I have even cleared CDN and Dispatcher cache as well and no etc/map in the publish instances. is there any way to check from where it is actually picking it up? 2. Also while creating the sling:mapping node with the domain nam (under http), do we need to create the node name with "www" in the prefix ? if so, the domain which is not configured without "www" requires another mapping without "wwww" in the sling:mapping folder? Please advise.

Answers (2)

Answers (2)

Avatar

Avatar

KiranVedantam1992

Avatar

KiranVedantam1992

KiranVedantam1992

06-01-2021

Hi @v1101,

 

1. In your sling:internalRedirect, I think you have missed the "/". Please add it and try again.

2. In general, we add the sling:Mapping node in sling:Folder node which holds the domain name.

 

Hope this helps.

 

Thanks,

Kiran Vedantam.

Avatar

Avatar

kunal23

MVP

Avatar

kunal23

MVP

kunal23
MVP

05-01-2021

 You can add a rewrite rule in Apache to do a 301 redirect. Why you are not using Apache/Web server for rewrite ?