.htaccessmod-rewriteshared-hostingrewritemap

Can I use RewriteMap on shared hosting Apache server?


I know that RewriteMap must be defined first before it can be used in .htaccess file. But I am not sure if I can do that in shared hosting or not. Is there any way to do it myself on the server?

What I want to do is redirect URL with uppercase to lowercase. I am trying to do that with .htaccess (If there is any other viable alternative, please describe that). But when I tried to use RewriteMap, it says not allowed. I learned that you need to define it first. So, I need to know if I can do it myself on the server.

Please don't give answers like Ask the Host or the Technical Support about that. I am going to do that. But before that, I would like to get some information on this. Many times the technical team are not good enough. Sometimes we tend to have more knowledge than they do and often I have found them giving incorrect information intentionally or unintentionally. I also want others with similar questions to get their answer. So I am posting this question.

I am also open to any suggestion to do this redirect without using RewriteMap. I have seen some rules which did the redirect but it was not proper. There were some problems with them.

Any help would be welcome and appreciated.

Thank You.


Solution

  • I was not able to define RewriteMap but my problem of redirecting the URL with uppercase character to lowercase is solved.

    Here is the solution provided by the support team. I am thankful to Alex who provided the solution.

    I tested it and it worked well. Hope this will be helpful to others too.

    I saw some similar solution but that did not work properly and someone cautioned about the performance issue. It was said to have used too much RAM. If anyone finds any performance issue with this, please do comment about that.

    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]
    RewriteRule ![A-Z] - [S=28]
    RewriteRule ^([^A]*)A(.*)$ $1a$2
    RewriteRule ^([^B]*)B(.*)$ $1b$2
    RewriteRule ^([^C]*)C(.*)$ $1c$2
    RewriteRule ^([^D]*)D(.*)$ $1d$2
    RewriteRule ^([^E]*)E(.*)$ $1e$2
    RewriteRule ^([^F]*)F(.*)$ $1f$2
    RewriteRule ^([^G]*)G(.*)$ $1g$2
    RewriteRule ^([^H]*)H(.*)$ $1h$2
    RewriteRule ^([^I]*)I(.*)$ $1i$2
    RewriteRule ^([^J]*)J(.*)$ $1j$2
    RewriteRule ^([^K]*)K(.*)$ $1k$2
    RewriteRule ^([^L]*)L(.*)$ $1l$2
    RewriteRule ^([^M]*)M(.*)$ $1m$2
    RewriteRule ^([^N]*)N(.*)$ $1n$2
    RewriteRule ^([^O]*)O(.*)$ $1o$2
    RewriteRule ^([^P]*)P(.*)$ $1p$2
    RewriteRule ^([^Q]*)Q(.*)$ $1q$2
    RewriteRule ^([^R]*)R(.*)$ $1r$2
    RewriteRule ^([^S]*)S(.*)$ $1s$2
    RewriteRule ^([^T]*)T(.*)$ $1t$2
    RewriteRule ^([^U]*)U(.*)$ $1u$2
    RewriteRule ^([^V]*)V(.*)$ $1v$2
    RewriteRule ^([^W]*)W(.*)$ $1w$2
    RewriteRule ^([^X]*)X(.*)$ $1x$2
    RewriteRule ^([^Y]*)Y(.*)$ $1y$2
    RewriteRule ^([^Z]*)Z(.*)$ $1z$2
    RewriteRule [A-Z] - [N]
    RewriteCond %{ENV:HASCAPS} TRUE
    RewriteRule ^/?(.*) /$1 [R=301,L]
    </IfModule>