I'm currently trying to place a URL within a URL. For example:
http://example.com/url/http%3A%2F%2Fwww.url2.com
I'm aware that I have to encode the URL, which I have done, but now I am getting a 404
error back from the server rather than my app. I think my problem lies with apache and can be fixed with the AllowEncodedSlashes On
directive.
I've tried putting the directive at the bottom of the httpd.conf to no effect, and am unsure what to do next. Am I putting it in the right place? If so, does anyone have any other solutions?
I kept coming across this post for another issue. Let me just explain real quick.
I had the same style URL and was also trying to proxy it.
Example: Proxy requests from /example/
to another server.
/example/http:%2F%2Fwww.someurl.com/
Issue 1: Apache believes that's an invalid url
Solution: AllowEncodedSlashes On
in httpd.conf
Issue 2: Apache decodes the encoded slashes
Solution: AllowEncodedSlashes NoDecode
in httpd.conf (Requires Apache 2.3.12+)
Issue 3: mod_proxy attempts to re-encode (double encode) the URL changing %2F
to %252F
(eg. /example/http:%252F%252Fwww.someurl.com/
)
Solution: In httpd.conf
use the ProxyPass
keyword nocanon
to pass the raw URL thru the proxy.
ProxyPass http://anotherserver:8080/example/ nocanon
httpd.conf file:
AllowEncodedSlashes NoDecode
<Location /example/>
ProxyPass http://anotherserver:8080/example/ nocanon
</Location>
Reference: