mod重写变量子目录内的子目录

时间:2013-04-02 19:44:14

标签: 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

如果'subdir',我的代码现在需要调用'newsubdir'。由于这是许多不同变量子目录($ var1)中的子目录,因此不仅仅是重命名一个文件夹。

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

所以我只是在寻找适当的重写规则,可以简单地处理“$ var1”并基本上忽略其余的。我想在规则中包含“/ a / b /”,因为代码中可能存在其他可能被此规则捕获的“/ b /”实例。

2 个答案:

答案 0 :(得分:1)

这就是你想要的:

Options +FollowSymlinks
RewriteEngine on

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

答案 1 :(得分:0)

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

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]