Mod rewrite mod_speling内部重定向,或如何使用mod_rewrite处理CAP

Mod rewrite mod_speling内部重定向,或如何使用mod_rewrite处理CAP,mod-rewrite,apache2,mod-speling,Mod Rewrite,Apache2,Mod Speling,我有一条规则: RewriteRule ^(panel|admin|site)/([A-Za-z0-9]+?)/(scripts|assets)/(.*)$ Project/$2/Public/$3/$1/$4 [L] 这个想法是允许访问公共资产,因为它们存在于代码模块中。唯一的问题是命名方案需要标题大小写(假设这是不可更改的)。因此,请求: /site/users/scripts/myscript.js 返回404,但: /site/Users/scripts/myscript.js 工

我有一条规则:

RewriteRule ^(panel|admin|site)/([A-Za-z0-9]+?)/(scripts|assets)/(.*)$ Project/$2/Public/$3/$1/$4 [L]
这个想法是允许访问公共资产,因为它们存在于代码模块中。唯一的问题是命名方案需要标题大小写(假设这是不可更改的)。因此,请求:

/site/users/scripts/myscript.js
返回404,但:

/site/Users/scripts/myscript.js
工作

我曾尝试使用mod_speling来处理外壳问题,但是mod_speling执行完全重定向而不是内部重定向,因此最终用户的URL更改为:

/Project/Users/Public/scripts/myscript.js
这是不好的。这意味着我的目录结构有点暴露,这意味着我需要一个额外的重写规则来通过它

有没有办法更优雅地处理mod_rewrite中的资本化(即不使用RewriteMap)?(需要将所有内容保存在.htaccess中)

或者,有没有办法将mod_speling更改为使用内部重定向

在mod_rewrite中更优雅地处理资本化(即不使用RewriteMap)

在我看来,您可以使用内部映射函数来降低成本,而不需要任何外部文件。还是我遗漏了什么


编辑:哈克的答案是26条重写规则,每个A-Z作为第一个字母,替换使用小写字母。。。或者由于未知原因出现在URL中的每个单词(如用户)的规则,您必须手动定义内部
RewriteMap
函数,然后才能使用它们(例如
RewriteMap tolower int:tolower
),这涉及到编辑服务器/虚拟主机配置。这是不幸的,因为这绝对是做这项工作的最佳工具。是的,这是我一直在碰壁的地方(我们部署在各种各样的服务器上,我通常没有那么多的访问权限,所以我不能假设我拥有它。我将把这标记为正确答案,它并不像回答问题的标准那样“正确”,但因为这是不可能的,所以这是最接近的:)