考虑一个.htaccess
必须将所有下划线转换为破折号的文件,并用文件名中的斜杠替换潜在的.html
后缀。
来自客户端的http://foo.com/a_b/c_d.html
示例 URL:要重定向的示例 URL:http://foo.com/a-b/c-d/
我一直在使用这个规则来替换.html
后缀:
RewriteRule ^(.*)\.html$ $1/ [R,L]
我发现这个了不起的 serverfault.SE 帖子用于下划线重写:
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
但是,只有一种替换类型发生,以.htaccess
文件中的第一个替换类型为准。我似乎无法配置.htaccess
为执行这两种替换。
这意味着以下代码将仅替换.html
后缀:
RewriteRule ^(.*)\.html$ $1/ [R,L]
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
以下代码将仅替换下划线:
RewriteRule ^(.*)_(.*)_(.*)_(.*)$ /$1-$2-$3-$4 [R,L]
RewriteRule ^(.*)_(.*)_(.*)$ /$1-$2-$3 [R,L]
RewriteRule ^(.*)_(.*)$ /$1-$2 [R,L]
RewriteRule ^(.*)\.html$ $1/ [R,L]
必须如何.htaccess
配置才能同时替换.html
后缀和下划线?