【问题标题】:RewriteCond/RewriteRule with case-insensitive and trailing slash functionality?具有不区分大小写和尾部斜杠功能的 RewriteCond/RewriteRule?
【发布时间】:2010-08-07 22:09:21
【问题描述】:

以下两行有问题:

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+[^/])$ /$1.html [L]

目标:重定向“domain.tld/test/”(仅当 test.html 存在时),使其输出“domain.tld/test.html”的内容。

  • 如何使这个不区分大小写:“domain.tld/Test” -> domain.tld/test.html **
  • 如何使其接受尾部斜杠:“domain.tld/test/”也应该可以使用

谢谢!

** 我无法让 RewriteMap 小写 int:tolower 工作,感谢任何帮助。

【问题讨论】:

  • 投票结束,因为这远非编程问题。这更适合系统管理,因此应该发布到 serverfault.com
  • 我在发帖前搜索过。 SO上有超过30页的类似问题。请不要关闭我!

标签: .htaccess mod-rewrite


【解决方案1】:

使用 [NC] 进行不区分大小写的检查。

有关尾部斜杠问题,请参见此处:Mode Rewrite; with/without trailing slash on end of url?

【讨论】:

    【解决方案2】:

    试试这个:

    RewriteRule (.+)/$ $1
    RewriteCond %{DOCUMENT_ROOT}/${tolower:$1}.html -f
    RewriteRule ^(.+[^/])$ /$1.html [L]
    

    此外,RewriteMap 只能在服务器配置或虚拟主机上下文中使用,而不能在 .htaccess 文件中使用。所以你需要在那里定义重写映射。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多