使用 htaccess 将特定字符 URL 后的首字母转换为大写

Convert first letter to uppercase after a specific character URLs using htaccess

我有一个看起来像 site.com/test+test 的 URL 并且 htaccess 文件中有一条规则将此 url 转换为 site.com/Test-Test

RewriteEngine On

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

第一个 RewriteRule 行将“/”后的第一个字母替换为大写字母,并且仅在 URL 中遇到的前 2 个“/”字符之后执行此操作,第二个 RewriteRule 行找到URL 中的所有“+”字符,并将它们替换为“-”,并将小写字母更改为大写字母,但问题是如何使第二条规则仅作为第一条规则工作 2 次(第一次后两次/和第二个/,符号+;在“/”之后的第一种和第二种情况下,“+”符号可以出现多次

示例: 我们有 url: site.com/test+test/test2+test2/test3+test3

更改 URl 后,它应该如下所示: site.com/Test-Test/Test2-Test2/test3-test3

在我的例子中,更改 URL 的代码如下所示: site.com/Test-Test/Test2-Test2/test3-Test3 /后的test3没有正确增加字母,-后字母错误增加

xample: we have url: site.com/test+test/test2+test2/test3+test3

after changing the URl it should look like this: site.com/Test-Test/Test2-Test2/test3-test3

您可以使用此规则来处理:

RewriteRule ^([A-Z][^/]+/)?([a-z])([^+]*)\+([a-z])(.*) /${uc:}-${uc:} [R=302,L]