我正在尝试提出正确的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
感谢您的帮助!
试试这个稍微修改的规则:
RewriteRule ^(.*?[^/])_+(.*)$ $1-$2 [E=underscores:Yes,N]
RewriteCond %{ENV:underscores} ^Yes$
RewriteRule ^(.+)$ /$1 [R=302,L]
尝试在
第一个正则表达式中将*
更改为+
:
RewriteCond %{REQUEST_URI} ^(.*)/([^/_]+)_+(.*)$
RewriteRule ^ %1/%2-%3 [E=underscores:Yes,N]
+
意味着它必须至少匹配一个。因此,刺痛_test
在_
之前没有任何非"_"字符,因此不匹配。