2

I have a .htaccess file that in its end I created some 301 redirects. For example:

Redirect 301 /site-building-from-home /
Redirect 301 /%D7%9E%D7%96%D7%99%D7%9F-%D7%AA%D7%9B%D7%A0%D7%99%D7%9D /

For some reason all redirects with an English alias (say, site-building-from-home) works but all these with encoded aliases (Hebrew-to-machine-language) don't.

Do we have an Apache-directives/PCRE expert that can explain this phenomena ?

(Note: I used / instead a domain-name+TLD for flexibility considerations).

1

As it states in the Apache docs for a mod-alias Redirect:

The old URL-path is a case-sensitive (%-decoded) path ...

So, assuming /%D7%9E%D7%96%D7%99%D7%9F-%D7%AA%D7%9B%D7%A0%D7%99%D7%9D is the actual request as sent from the client, then you will need to match against the literal, percent-decoded (aka URL-decoded), text in the Redirect directive. From your example this would be:

Redirect /מזין-תכנים /

(Make sure your .htaccess file is UTF-8 encoded.)

If you want to match the percent-encoded URL, as sent from the client, then you will need to use mod_rewrite and match against THE_REQUEST server variable (which is not percent-decoded). For example:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /%D7%9E%D7%96%D7%99%D7%9F-%D7%AA%D7%9B%D7%A0%D7%99%D7%9D\ HTTP/
RewriteRule ^ / [R=301,L]

You will need to enable the rewrite engine earlier in your code if not already ie. RewriteEngine On.

However, if you change to using mod_rewrite redirects then it is strongly recommended to change your mod_alias Redirects to use mod_rewrite as well in order to avoid unexpected conflicts.

  • Instead of moving all ~ 150 redirects to mod-rewrite oriented syntax, do you know a fast way to decode all redirects inside notepad++ or another way to transform all ~ 150 redirects decoded in a single clicks? Will start looking a way now but please tell me if you know anything. – JohnDoea Sep 27 '16 at 7:58
  • You could try just pasting your code/encoded URLs into an online URL decoder/encoder and hitting the "decode" button - just be careful if there is anything that shouldn't be "decoded". – MrWhite Sep 27 '16 at 8:03
  • Yes, I knew this way a few years ago and also thought something that "doesn't need" to change will be changed --- But, gladly, only the codded aliases was decoded and it worked like a charm and now the 301s are working fine. Thank you! – JohnDoea Sep 27 '16 at 8:08
  • I used this particular tool: meyerweb.com/eric/tools/dencoder – JohnDoea Sep 27 '16 at 8:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.