【问题标题】:Case sensitivity only by all lowercase or all uppercase?仅对全部小写或全部大写区分大小写?
【发布时间】:2016-11-09 03:00:34
【问题描述】:

在我的 CMS 中,我对 PHP 代码进行了样式调整。

<img src="/var/thumbs<?= $next_page_url ?>.JPG" height="50" alt="Next">

有以下现象:

如果文件名同时包含大写和小写字母 (PIC123a.jpg),则它不起作用。如果文件名只有大写(PIC123.JPG)或只有小写(pic-test.jpg),它可以工作。

如果我使用 .htaccess 中的条目,它也适用于混合大小写字母。

<IfModule mod_speling.c>
  CheckCaseOnly On
  CheckSpelling On
</IfModule>

但我想知道为什么如果没有这些 .htaccess 条目,分别只有大写或只有小写,它就无法工作。

PS:CMS 只有 var $next_page_url,没有 $next_page_item。我不想做太多的 PHP hack。

--- 编辑 --- 更多信息 ---

没有 htaccess 条目:

如果文件扩展名大写和文件名大写 (PIC123.JPG) = 它可以工作

如果文件扩展名小写和文件名小写 (pic-test.jpg) = 它可以工作

如果文件扩展名小写且文件名大写 (PIC123.jpg) = 无效

【问题讨论】:

  • @Martin 使用短回显标签 &lt;?= 没有任何问题。即使禁用了短标签 (&lt;?),仍然启用短回显。 = 后面是否有空格也没关系。这不会有任何区别,空格与否,因为 php 代码中的空格以及变量、字符串等周围的空格都被忽略了。
  • 我插入了 [QSA, L, NC],但没有成功。 php short_tag 已启用。没有问题。

标签: php case-sensitive case-insensitive mod-speling


【解决方案1】:

每当您访问一个 url 时,就意味着您访问的是 apache 或 nginx 之类的服务器。 php 本身不是服务器。它只是处理请求 btu 这些请求首先由 apache 或 nginx 等 Web 服务器处理

CheckSpelling 操作使 Apache 执行更复杂的工作来查找匹配项,例如纠正常见的拼写错误

这就是为什么要使用这段代码来完成任务的原因

<IfModule mod_speling.c>
  CheckCaseOnly On
  CheckSpelling On
</IfModule>

明白了吗? :)

编码愉快!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-03-16
  • 2017-08-14
  • 1970-01-01
  • 2015-12-25
  • 2012-12-01
  • 2013-03-06
  • 2020-02-18
  • 1970-01-01
相关资源
最近更新 更多