首页 > 解决方案 > 使用 htaccess 将首字母从小写转换为大写 URL

问题描述

我想将 example.com/test/test2 转换为 example.com/Test/Test2。使用 .htaccess 或 apache (2.4) rewritemap。

找了很多选项,但是都把单词中的所有字母都改了,怎么只增加每个“/”后面的第一个字母

非常感谢您的友好回答。

我试过以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond expr "toupper(%{REQUEST_URI}) =~ m#(.+)/?$#"
RewriteRule [a-z] %1/ [L]

标签: apache.htaccessmod-rewrite

解决方案


找了很多选项,但是都把单词中的所有字母都改了,怎么只增加每个“/”后面的第一个字母

首先RewriteMap在您的 Apache 配置中定义它并重新启动 Web 服务器。

RewriteMap uc int:toupper

然后在您的站点根目录中使用规则 .htaccess 将每个字母之后的第一个字母转换/为大写。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Z].*/)?([a-z])(.*) /$1${uc:$2}$3 [R=302,L,NE]

清除浏览器缓存后进行测试。


更新:基于下面对大写的评论,仅在前两个子目录中使用:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Z][^/]+/)?([a-z])(.*) /$1${uc:$2}$3 [R=302,L]

推荐阅读