Regex 将URL'中的下划线替换为破折号;s(阿帕奇)

Regex 将URL'中的下划线替换为破折号;s(阿帕奇),regex,apache,.htaccess,Regex,Apache,.htaccess,编辑:哎呀,答案就在我眼前。解决方法是首先替换下划线。我只是简单地把这些规则置于规则之上 小写规则,现在看来效果不错 我想将我的URL改为小写,并用破折号替换下划线。因此,如果访问者到达mysite/World/New_York,URL将默认为mysite/World/New York 我通过修改httpd.conf文件并将其添加到.htaccess文件中来处理小写字母 RewriteRule ^(.*?[A-Z].*) /${tolower:$1} [R] 然后,我添加了以下规则以用破折号替

编辑:哎呀,答案就在我眼前。解决方法是首先替换下划线。我只是简单地把这些规则置于规则之上 小写规则,现在看来效果不错

我想将我的URL改为小写,并用破折号替换下划线。因此,如果访问者到达mysite/World/New_York,URL将默认为mysite/World/New York

我通过修改httpd.conf文件并将其添加到.htaccess文件中来处理小写字母

RewriteRule ^(.*?[A-Z].*) /${tolower:$1} [R]
然后,我添加了以下规则以用破折号替换下划线:

RewriteRule ^([^_\ ]*)[_\ ](.*?[_\ ].*) $1-$2 [N]
RewriteRule ^([^_\ ]*)[_\ ]([^_\ ]*) /$1-$2 [L,R=301]
我可以发誓它工作正常,但现在不行了

这很好用-mysite/World/newyork;它正确地默认为mysite/world/newyork

但URL中的下划线只有在它们是小写时才起作用;此mysite/world/new_york默认为new york

然而,大写字母和下划线的组合是另一回事。URL/world/New_York默认为mysite/mysite/world/New York

如果我也将部分名称(mysite/World/New_York)大写,页面就会消失(我的浏览器只会显示“未收到数据”)

我也尝试过这些变化,但没有成功

RewriteRule ^([^_]*)_([^_]*_.*) $1-$2 [N]
RewriteRule ^([^_]*)_([^_]*)$ /$1-$2 [L,R=301]
这就是我的分区规则看起来的样子

RewriteRule ^World/([a-zA-Z0-9()_/-]+)/?$ World/index.php?area=$1 [L]

有什么办法解决这个问题吗?

有什么问题吗:?这不仅仅是用破折号替换下划线的问题。正如我上面解释的,只要字符都是小写,该函数实际上就可以工作。问题在于下划线如何与大写字母相互作用。