我想使用mod_rewrite
将URL路径中的所有正斜杠替换为破折号。
所以https://stackoverflow.com/foo/bar/baz应该重定向到https://stackoverflow.com/foo-bar-baz。
路径中可能有任意数量的段(在正斜杠之间)。
我认为解决方案涉及N标志,但我所做的每一个尝试都导致无限循环。
我想使用mod_rewrite
将URL路径中的所有正斜杠替换为破折号。
所以https://stackoverflow.com/foo/bar/baz应该重定向到https://stackoverflow.com/foo-bar-baz。
路径中可能有任意数量的段(在正斜杠之间)。
我认为解决方案涉及N标志,但我所做的每一个尝试都导致无限循环。
You can use these 2 rules in your root .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^([^/]+)/([^/]+)/?$ $1-$2 [NE,L,R=302]
RewriteRule ^([^/]+)/(.+)$ $1-$2
这将把 example.com/foo/bar/baz/abc/xyz/123
重定向到 example.com/foo-bar-baz-abc-xyz-123
/
。第二条规则将一直执行多次,每次将每个 /
替换为 -
,直到只剩下一个 /
。 - anubhavaN
进行循环,这是默认的 Apache 行为。只要当前 URI 存在匹配规则,该规则就会被执行。 - anubhava