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



我有一个看起来像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])(.*) /$1${uc:$2}$3 [R=302,L]
RewriteRule ^([^.+]*)+([a-z])(.*)$ /$1-${up:$2}$3 [L,R=301]

其中第一个RewriteRule行将第一个字母替换为"0"之后的大写字母/"并且仅在第一个2〃之后这样做/"在URL中遇到的字符,并且第二个RewriteRule行找到所有"字符+"URL中的字符,并将它们替换为"-"以及将小写字母改为大写字母,但问题是如何使第二条规则仅作为第一条规则工作2次(在第一个/和第二个/之后两次,符号+;在"/"之后的第一种和第二种情况下,"+"符号可以出现不止一次(

示例:我们有网址: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没有正确地增加字母,而在-之后字母错误地增加

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

更改URl后,它应该是这样的:site.com/Test-Test/Test2-Test2/test3-test3

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

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

相关内容

最新更新