.htaccess 重写:如何删除除第一个和第二个之外的所有目录?

.htaccess 重写:如何删除除第一个和第二个之外的所有目录?

我正在尝试完成特定的 .htaccess 重写,但是我的正则表达式技能限制了我这样做;

示例 1:www.domain.com/dir1/dir2/dir3/file.txt 应变为 www.domain.com/dir1/dir2/file.txt

示例 2:www.domain.com/dir1/dir2/dir3/dir4/file.txt 也应变为 www.domain.com/dir1/dir2/file.txt

示例 3:www.domain.com/dir1/dir2/dir3/dir4%2Ffile.txt 也应变为 www.domain.com/dir1/dir2/file.txt

等等。由于我事先不知道 dir2、dir3、dir4 等等是什么,所以可能应该使用正则表达式。另外,我事先不知道目录会有多深(是否会有 dir3、dir4 甚至 dir5)。还应该识别 Urlencoded 斜线。使用 php 来处理这个问题不是一个选择。

任何帮助将不胜感激!

答案1

要剥离第三个和后续目录:

RewriteRule ^/(dir1)/([^/]+)/(.+)/([^/]+)$ $1/$2/$4 [L]

相关内容