Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 我可以在共享托管Apache服务器上使用RewriteMap吗?_.htaccess_Mod Rewrite_Shared Hosting_Rewritemap - Fatal编程技术网

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

.htaccess 我可以在共享托管Apache服务器上使用RewriteMap吗?,.htaccess,mod-rewrite,shared-hosting,rewritemap,.htaccess,Mod Rewrite,Shared Hosting,Rewritemap,我知道必须先定义RewriteMap,然后才能在.htaccess文件中使用它。但我不确定我是否能在共享主机中做到这一点。有没有办法自己在服务器上完成 我要做的是将带有大写字母的URL重定向到小写字母。我正试图用.htaccess实现这一点(如果有其他可行的替代方案,请描述)。但当我尝试使用RewriteMap时,它说不允许。我知道你需要先定义它。所以,我需要知道我是否可以在服务器上自己做 请不要给出像询问主持人或技术支持这样的答案。我打算那样做。但在此之前,我想了解一些有关这方面的信息。很多时

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

我要做的是将带有大写字母的URL重定向到小写字母。我正试图用.htaccess实现这一点(如果有其他可行的替代方案,请描述)。但当我尝试使用RewriteMap时,它说不允许。我知道你需要先定义它。所以,我需要知道我是否可以在服务器上自己做


请不要给出像询问主持人或技术支持这样的答案。我打算那样做。但在此之前,我想了解一些有关这方面的信息。很多时候,技术团队不够优秀。有时我们比他们拥有更多的知识,我经常发现他们有意或无意地提供了错误的信息。我也希望其他有类似问题的人得到他们的答案。因此,我发布了这个问题

我也愿意接受任何建议,在不使用RewriteMap的情况下执行此重定向。我看到了一些规则,这些规则导致了重定向,但这是不正确的。他们有一些问题

我们欢迎并感谢任何帮助


谢谢。

我无法定义RewriteMap,但将带有大写字符的URL重定向为小写字符的问题已解决

以下是支持团队提供的解决方案。我感谢亚历克斯提供了解决方案

我测试了一下,效果很好。希望这对其他人也有帮助

我看到了一些类似的解决方案,但没有正常工作,有人对性能问题提出了警告。据说它用了太多的内存。如果有人发现任何性能问题,请对此发表评论

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

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

询问主机或技术支持。时期通常只有他们才能访问需要放置这些文件的中央服务器配置文件。“我也愿意接受任何建议,在不使用RewriteMap的情况下执行此重定向。”-RewriteRule捕获任何包含大写字母的内容,在内部将其重写为您自己的脚本(PHP或其他服务器端技术),将URL小写,并发出外部重定向。技术支持团队通知我不能使用RewriteMap。
mod_rewrite
绝对不是最好的解决方案。相反,在服务器脚本(例如php)中执行此操作@JustinIurman:这样做是不是php更好?我认为最好使用.htaccess。你(和其他人)能分享关于哪种方式更好以及为什么更好的信息吗?如果你真的想用
mod_rewrite
,你至少应该使用
RewriteMap
(不能在htaccess中完成,而是直接在apache配置中完成)。这比使用htaccess要快一点。不过,最好使用php(例如)来实现这一点。为什么?因为mod_rewrite不是为这个目的而设计的,很简单。@JustinIurman:是的,我同意你的观点,RewriteMap会更好。主要的问题是关于这一点,但不可能在共享主机中定义。与PHP重定向相比,我认为htaccess会更快。我所说的恰恰相反。在这方面,htaccess不可能比php更快