Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

URL Rewriting

Avatar

Level 6

Hello Team,

 

Hope you are doing fine.

 

I need one small help regarding URL rewriting in Apache dispatcher :

 

REQUIREMENT:

 

This is my current rule for home page and other pages, it works fine.

# Homepage
#Homepage
RewriteRule ^/$ /en.html [R,L,ENV=REDIRECTCACHE:1]


# Base path prepend
RewriteCond %{REQUEST_URI} !^/dispatcher/.*
RewriteCond %{REQUEST_URI} !^/libs/.*
RewriteCond %{REQUEST_URI} !^/content/mysite-uk/.*
RewriteCond %{REQUEST_URI} !^/content/experience-fragments/.*
RewriteCond %{REQUEST_URI} !^/content/dam/.*
RewriteCond %{REQUEST_URI} !^/etc/.*
RewriteCond %{REQUEST_URI} !^/etc.clientlibs/.*
RewriteCond %{REQUEST_URI} !^/conf/.*
RewriteCond %{REQUEST_URI} !^/bin/.*
RewriteCond %{REQUEST_URI} !^/system
RewriteCond %{REQUEST_URI} !^/.well-known/.*
RewriteCond %{REQUEST_URI} !^/error/.*
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteCond %{REQUEST_URI} !^/BingSiteAuth.xml

RewriteRule ^(.*)$ /content/mysite-uk$1 [PT,QSA]

 

Now my new requirement is to add a keyword "cmsapp" between domain and main url.

for example:
1) To access home page, now, It should be like that

https://<domainName>/cmsapp --It should open /content/mysite-uk/en.html

Similarly,

2) for other pages,

https://<domainName>/cmsapp/product/coffee ----- It should open /content/mysite-uk/product/coffee.html

 

 

Could some one help me out please.

 

Regards,

AP

 

 

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Can you try with

RewriteRule ^/?cmsapp/(.*)$ /content/mysite-uk/$1.html [PT]

 

you can test at below

https://technicalseo.com/tools/htaccess/?share=ewogICJodGFjY2VzcyI6ICJSZXdyaXRlUnVsZSBeLz9jbXNhcHAvK...



Arun Patidar

View solution in original post

4 Replies

Avatar

Correct answer by
Community Advisor

Can you try with

RewriteRule ^/?cmsapp/(.*)$ /content/mysite-uk/$1.html [PT]

 

you can test at below

https://technicalseo.com/tools/htaccess/?share=ewogICJodGFjY2VzcyI6ICJSZXdyaXRlUnVsZSBeLz9jbXNhcHAvK...



Arun Patidar

Avatar

Level 2

Hi @arvind ,

 

For this, you need to do 2 parts;

1. Write http rule in dispatcher.

  •   if there is no url then redirect is it /cmsapp.
  •   if there is url then append the remaining part of the url(leaving domain) at the end of custom url something like cmsapp/$1.

2. Since cmsapp doesnt exist  so add resource resolver mapping configuration in JcrResourceResolverFactory so that syntheic url resolves to correct resource.

 

Keep in mind, for step 1 also test urls with selectors and query strings.

 

Thanks,

Sudesh

Avatar

Community Advisor

Hi @arvind ,

 

Basically below is what you want

 

RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [PT,QSA]

 

We added QSA, because we do not want to discard query string.

So the final entry which should work should be-


RewriteRule ^/?cmsapp/(.*)$ /content/mysite-uk/$1.html [PT,QSA]