编辑:哎呀,答案就在我的鼻子底下。解决方案是首先更换下划线。我只是将这些规则放在上面 小写规则,现在似乎工作正常。
我想将我的网址更改为小写,并用短划线替换下划线。因此,如果访问者到达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 / New-York;它正确默认为mysite / world / new-york
但是带有下划线的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]
任何想法如何解决这个问题?