我正在尝试使用正确的RewriteRule或RewriteCond将下划线更改为连字符,除非下划线前面有正斜杠。我有以下规则,将所有下划线更改为连字符,无论其前面是什么:
RewriteRule ^([^_]*)_+(.*)$ $1-$2 [E=underscores:Yes,N]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule (.*) http://%{HTTP_HOST}/$1 [R=301,L]
我需要修改哪些内容以防止'/ _'更改为'/ - '?
示例:
http://host/_test_location/_test_page
变为
http://host/_test-location/_test-page
不是
http://host/-test-location/-test-page
感谢您的帮助!
答案 0 :(得分:0)
尝试将第一个正则表达式中的*
更改为+
:
RewriteCond %{REQUEST_URI} ^(.*)/([^/_]+)_+(.*)$
RewriteRule ^ %1/%2-%3 [E=underscores:Yes,N]
+
表示必须至少匹配一个。所以sting _test
在_
之前没有任何非“_”字符,所以不匹配。
答案 1 :(得分:0)
尝试这个略微修改的规则:
RewriteRule ^(.*?[^/])_+(.*)$ $1-$2 [E=underscores:Yes,N]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule ^(.+)$ /$1 [R=302,L]