使用 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]
我有一个看起来像 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]