Apache 变量子目录内子目录的mod rewrite

Apache 变量子目录内子目录的mod rewrite,apache,mod-rewrite,Apache,Mod Rewrite,我需要下面的例子 http://www.domain.com/a/b/$var1/newsubdir/c/$var2/$var3/$foo.mp3 改写为: http://www.domain.com/a/b/$var1/subdir/c/$var2/$var3/$foo.mp3 我的代码现在需要调用'newsubdir',如果是'subdir'。因为这是许多不同变量subdir($var1)中的一个subdir,所以不只是重命名一个文件夹的问题 $var1、$var2、$var3是根据ac

我需要下面的例子

http://www.domain.com/a/b/$var1/newsubdir/c/$var2/$var3/$foo.mp3
改写为:

http://www.domain.com/a/b/$var1/subdir/c/$var2/$var3/$foo.mp3
我的代码现在需要调用'newsubdir',如果是'subdir'。因为这是许多不同变量subdir($var1)中的一个subdir,所以不只是重命名一个文件夹的问题

$var1、$var2、$var3是根据accountid、用户等生成的物理文件路径(现在无法更改) $foo是一个文件名


所以我只是在寻找合适的重写规则,它可以简单地处理“$var1”,而基本上忽略其余部分。我希望在规则中包含“/a/b/”,因为在该规则中可能会发现代码中存在“/b/”的其他实例。

通过
httpd.conf
启用mod_rewrite和.htaccess,然后将该代码放在
文档根目录下的
.htaccess
中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(a/b)/([^/]+)/subdir/(c)/([^/]+)/([^/]+)/([^.]+\.mp3)$ /$1/$2/newsubdir/$3/$4/$5/$6 [L,R=302,NC]
这就是你想要的吗:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^a/b/(.+)/newsubdir/c/(.+)/(.+)/(.+).mp3 /a/b/$1/subdir/c/$2/$3/$4.mp3

谢谢这很简单。我相信阿努巴瓦的回答也足够了。我还遇到了另一个与原始问题无关的问题,但可能对使用Amazon S3的人有用。我意识到我需要在ProxyPass中应用这一点。但我没有意识到我需要使用ProxyPassMatch。所以它看起来是这样的:ProxyPassMatch^/a/b/(.+)/newsubdir/(.+)/(.+)/(.+)/(.+)