最近,我被迫从cPanel迁移到CentOS Web,并且存在一个区分大小写的文件名问题,因此在url "filewhatEver.jpg“中找不到"filewhatever.jpg”(以前在cPanel中没有问题)。
这个站点(有4个宿主) .htaccess只有WordPress站点的基本配置:
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]mod_rewrite是活动的(在活动模块中列出),但是当我尝试:
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]不走运。编辑:给我一个“内部服务器错误”。
有什么想法吗?
发布于 2019-09-12 23:29:08
由于底层文件名是混合大小写,所以不能使用重写映射将请求转换为小写,因为它仍然无法匹配。(顺便说一句,重写映射只能在主服务器配置中定义,而不能在.htaccess中定义。)
但是,您可以使用mod_speling (一个l)来实现不区分大小写的文件匹配.
您需要首先确保服务器上启用了mod_speling。然后向虚拟主机配置(或.htaccess文件)添加以下指令:
CheckSpelling on
CheckCaseOnly on但是,请注意,使用mod_speling还有额外的开销,当找到文件时会触发外部重定向。重定向对于SEO是必要的,但是如果您在混合情况下请求图像资源,则会对服务器性能造成影响(这是什么样子?)。
我假设mod_speling在旧的cPanel服务器上是默认启用的,因为默认情况下这不会是不区分大小写的。
mod_speling实际上只适用于来自外部站点的不正确大小写请求。任何内部请求都应该是“固定的”,以匹配基础文件的正确情况。
https://serverfault.com/questions/984051
复制相似问题