首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CWP7 - mod_rewrite不工作?

CWP7 - mod_rewrite不工作?
EN

Server Fault用户
提问于 2019-09-12 21:55:34
回答 1查看 1.9K关注 0票数 1

最近,我被迫从cPanel迁移到CentOS Web,并且存在一个区分大小写的文件名问题,因此在url "filewhatEver.jpg“中找不到"filewhatever.jpg”(以前在cPanel中没有问题)。

这个站点(有4个宿主) .htaccess只有WordPress站点的基本配置:

代码语言:javascript
复制
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

mod_rewrite是活动的(在活动模块中列出),但是当我尝试:

代码语言:javascript
复制
RewriteMap insensitive tolower:
RewriteRule ^[\/]*(.*)$ /${insensitive:$1} [R,L]

不走运。编辑:给我一个“内部服务器错误”。

有什么想法吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-09-12 23:29:08

由于底层文件名是混合大小写,所以不能使用重写映射将请求转换为小写,因为它仍然无法匹配。(顺便说一句,重写映射只能在主服务器配置中定义,而不能在.htaccess中定义。)

但是,您可以使用mod_speling (一个l)来实现不区分大小写的文件匹配.

您需要首先确保服务器上启用了mod_speling。然后向虚拟主机配置(或.htaccess文件)添加以下指令:

代码语言:javascript
复制
CheckSpelling on
CheckCaseOnly on

但是,请注意,使用mod_speling还有额外的开销,当找到文件时会触发外部重定向。重定向对于SEO是必要的,但是如果您在混合情况下请求图像资源,则会对服务器性能造成影响(这是什么样子?)。

我假设mod_speling在旧的cPanel服务器上是默认启用的,因为默认情况下这不会是不区分大小写的。

mod_speling实际上只适用于来自外部站点的不正确大小写请求。任何内部请求都应该是“固定的”,以匹配基础文件的正确情况。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/984051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档