I'm currently in the process of applying a variety of 301 redirects in an .htaccess
file for a website that recently changed its structure. Everything is working as expected, except for URLs that contain special characters, for these I am getting 404 errors.
For example the following directives that have a registered trademark symbol (®) bring up 404 pages:
RedirectMatch 301 ^/directory/link-with®-special-character(/)?$ somelink.com
RedirectMatch 301 ^/directory/link-with%c2%ae-special-character(/)?$ somelink.com
I've also tried using Redirect
, RewriteRule
and surrounding the urls with double quotes and nothing seems to work.
Does anyone know what might be happening or the proper way to handle these types of directives?
Any help is greatly appreciated.
Best Answer
I can confirm that those two attempts at RedirectMatch fail on my apache installation as well, even accounting for capitalization (my logs see the requests as
link-with%C2%AE-special-character
).You might consider using the regex capabilities of RedirectMatch, replacing the trademark symbol placement with either
.*
or (as seems to work for my apache environment)..
, e.g.As indicated by the urlencoding
%C2%AE
, this trademark symbol is interpreted as two characters, so..
works as a regex for it, while.
does not.