Facing issues with special characters in url in dispatcher | Community
Skip to main content
p0990m
January 25, 2021
Solved

Facing issues with special characters in url in dispatcher

  • January 25, 2021
  • 4 replies
  • 4633 views

Hi All, We are sending some data through the query parameter in url which has some special characters like { },[], ". Example url : /content/abc/test.html?data={"title":"Get%20a%20Quote%20-%20Compare%20Plans%20and%20Prices","travelers":[{"age":20,"sameAddress":true,"tripCost":300}]}. converted url - /content/abc/test.html?data=%7b%2522title%2522:%2522Get%2520a%2520Quote%2520-%2520Compare%2520Plans%2520and%2520Prices%2522.... In our QA publish url it is working fine, but in the dispatcher url these special characters  are getting converted into their hex-code equivalent. So can you please do let me know what rewrite rules and which file we do need to write in dispatcher to avoid those special characters to getting converted to their hex-code?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by kiranparab

Hi,

 

Avoid encoding dispatcher URLs -

 
Rewrite rules on Apache web server that attempt to redirect to URLs with special characters such as & or ? or #anchor aren't being redirected properly.  For example:
RewriteRule ^/we-retail.html /we-retail.html#anchor [R=301,L]
 
To avoid encoding the # character, add the NE flag to the rewrite rules:
 
RewriteRule ^/test.html /test.html#anchor [NE,R=301,L]
 
Special characters such as & and ?, will be converted to their hexcode equivalent. Using the [NE] flag prevents that from happening.
RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]
 
The above example will redirect /anchor/xyz to /bigpage.html#xyz. Omitting the [NE] will result in the # being converted to its hexcode equivalent, %23, which will then result in a 404 Not Found error condition.
 
 
Thanks,
Kiran Parab

4 replies

BrianKasingli
Community Advisor and Adobe Champion
Community Advisor and Adobe Champion
January 25, 2021

@p0990m,

Within your httpd.conf, you can try to add:

 

AddDefaultCharset utf-8

 

Making sure you have utf-8 encoding enabled.

Kunal_Gaba_
January 26, 2021

I recommend you to pass the JSON object in request body not in query params. And use POST method for these type of requests. 

kiranparabAccepted solution
Level 3
January 27, 2021

Hi,

 

Avoid encoding dispatcher URLs -

 
Rewrite rules on Apache web server that attempt to redirect to URLs with special characters such as & or ? or #anchor aren't being redirected properly.  For example:
RewriteRule ^/we-retail.html /we-retail.html#anchor [R=301,L]
 
To avoid encoding the # character, add the NE flag to the rewrite rules:
 
RewriteRule ^/test.html /test.html#anchor [NE,R=301,L]
 
Special characters such as & and ?, will be converted to their hexcode equivalent. Using the [NE] flag prevents that from happening.
RewriteRule ^/anchor/(.+) /bigpage.html#$1 [NE,R]
 
The above example will redirect /anchor/xyz to /bigpage.html#xyz. Omitting the [NE] will result in the # being converted to its hexcode equivalent, %23, which will then result in a 404 Not Found error condition.
 
 
Thanks,
Kiran Parab
kautuk_sahni
Community Manager
Community Manager
January 27, 2021
kiranparab Thanks for assisting community.
Kautuk Sahni
Level 2
February 4, 2021

The short, right answer for the question itself is the apache rewrite NE flag.

The long answer... is that you shouldn't send JSON objects in URLs for many many reasons. Some options:

1. Use a POST

2. Save that JSON in the browser session or local storage and read it on the next page.

3. At least transform that JSON in "normal" URL params and pass that...