重写URL,以便第一个文件夹将URI

问题描述:

问题重写URL,以便第一个文件夹将URI

被删除我尝试撰写该重写这个

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

这个

http://my.domain.pl/subdir/b/c/d/foo.bar 

没有a/一个重写规则目标网址中的文件夹。

subdir是放置.htaccess的文件夹。该规则必须删除subdir旁边的第一个文件夹,而不管路径后面有多少个文件夹。

因此,例如,该

http://my.domain.pl/subdir/a/b/c/d/ghi/hij/foo.bar 

应rewrited这个

http://my.domain.pl/subdir/b/c/d/ghi/hij/foo.bar 

为好。

我的做法

我准备的规则,但我想象它没有工作:

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

此规则rewrited

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

http://my.domain.pl/subdir/foo.bar 

奇怪的是一个非常类似的规则,没有在$1.$2的时间段,但没有一封信被重写,因为我预期。我的意思是这样的规则:

RewriteRule ^[^/]+/(.+)\.([^/]+)$ $1x$2 [L] 

它rewrited这

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

这个

http://my.domain.pl/subdir/b/c/d/fooxbar 

在逃避这样$1\.$2规则没有帮助的时期。

问题

如何创建规则删除该路径的第一个文件夹?

您没有使用适当的正则表达式匹配要求uri.Try这样的:

RewriteRule ^[^/]+/(.*?)/(.+\.[^/]+)$ /subdir/$1/$2 [L] 
+0

它不工作。这个路径收缩在循环中执行几次。我的规则也是同样的问题。所以我们必须制定一个规则来处理只收缩的规则。我们可以添加一个RuleCond来检查“a”文件夹是否存在,并在存在时进行重写,但是应该知道该文件夹的名称。 – trzczy