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