用破折号替换所有正斜杠

ank*_*ank 5 .htaccess mod-rewrite

SO 上有一些类似的 问题,但没有一个适用于这个特定的场景.

我想使用破折号替换URL路径中的所有正斜杠mod_rewrite.

所以https://stackoverflow.com/foo/bar/baz应该重定向到https://stackoverflow.com/foo-bar-baz.

路径中可以有任意数量的段(正斜杠之间).

我认为解决方案涉及N标志,但我所做的每一次尝试都会产生无限循环.

anu*_*ava 5

您可以在根.htaccess中使用以下2条规则:

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+)/([^/]+)/?$ $1-$2 [NE,L,R=302]

RewriteRule ^([^/]+)/(.+)$ $1-$2
Run Code Online (Sandbox Code Playgroud)

这将重定向example.com/foo/bar/baz/abc/xyz/123example.com/foo-bar-baz-abc-xyz-123