问题
我尝试编写一个重写此
的RewriteRulehttp://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
应该重新写入此
http://my.domain.pl/subdir/b/c/d/ghi/hij/foo.bar
。
我的方法
我准备了规则,但它没有像我预期的那样工作:
RewriteRule ^[^/]+/(.+)\.([^/]+)$ $1.$2 [L]
此规则重写
http://my.domain.pl/subdir/a/b/c/d/foo.bar
到
http://my.domain.pl/subdir/foo.bar
奇怪的是一个非常相似的规则,在$1.$2
没有句号,但没有任何一封信按照我的预期重写。我的意思是这样一条规则:
RewriteRule ^[^/]+/(.+)\.([^/]+)$ $1x$2 [L]
它重写了这个
http://my.domain.pl/subdir/a/b/c/d/foo.bar
进入这个
http://my.domain.pl/subdir/b/c/d/fooxbar
像$1\.$2
一样逃避规则中的句号并没有帮助。
问题
如何创建规则以删除路径的第一个文件夹?
答案 0 :(得分:0)
您没有使用正确的正则表达式模式来匹配请求的uri。请尝试:
RewriteRule ^[^/]+/(.*?)/(.+\.[^/]+)$ /subdir/$1/$2 [L]