我可以在共享托管Apache服务器上使用RewriteMap吗?

时间:2018-08-03 07:29:38

标签: .htaccess mod-rewrite shared-hosting rewritemap

我知道RewriteMap必须先定义,然后才能在.htaccess文件中使用。但是我不确定是否可以在共享主机中做到这一点。有什么办法可以自己在服务器上完成吗?

我想做的是将URL大写重定向到小写。我正在尝试使用.htaccess进行此操作(如果还有其他可行的选择,请描述一下)。但是,当我尝试使用RewriteMap时,它说不允许。我了解到您需要先对其进行定义。因此,我需要知道是否可以自己在服务器上完成该操作。

请不要提供诸如询问主持人或技术支持之类的答案。我要去做。但是在此之前,我想获得一些信息。很多时候,技术团队还不够出色。有时我们倾向于比他们拥有更多的知识,而且我经常发现他们有意或无意地提供了错误的信息。我也希望其他有类似问题的人得到答案。所以我要发布这个问题。

我也愿意接受任何不使用RewriteMap进行重定向的建议。我已经看到一些进行重定向的规则,但这是不合适的。他们有一些问题。

任何帮助都将受到欢迎和赞赏。

谢谢。

1 个答案:

答案 0 :(得分:0)

我无法定义RewriteMap,但是解决了将具有大写字符的URL重定向到小写字母的问题。

以下是支持团队提供的解决方案。我感谢提供解决方案的Alex。

我对其进行了测试,并且效果很好。希望这对其他人也有帮助。

我看到了一些类似的解决方案,但是该解决方案无法正常工作,有人警告性能问题。据说使用了太多的RAM。如果有人发现任何与此相关的性能问题,请对此发表评论。

<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>