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/(.+)/(.+)/(.+)/(.+)