如何重写路径的一部分而不影响相似路径中的其他重写?

时间:2019-04-19 21:12:57

标签: apache mod-rewrite url-rewriting

我正在尝试在类似的路径结构中创建许多重写。我需要一个带有字符的特定路径,尝试在将路径写回到其根路径后尝试输入字符,如下所示。其中包括/foo/bar/test/* to /foo/bar/test,还包括/foo/* to /foo/(如果请求是针对/foo/bar以外的其他内容,例如/foo/abc,则将其重定向回/foo)。

这是在运行apache 2.2的linux服务器上。我试图使用L标志在重写引擎URL解析上停止匹配,并将所有包含的规则移至匹配列表的底部。

RewriteRule ^/foo/bar/test/(.*)  /foo/bar/test/   [R=302,NC,NE,L] 
RewriteRule ^/foo/bar/test2/(.*) /foo/bar/test2/  [R=302,NC,NE,L]
RewriteRule ^/foo/bar/test3/(.*) /foo/bar/test3/  [R=302,NC,NE,L]

RewriteRule ^/foo/bar/(.*) /foo/bar/              [R=302,NC,NE,L]
RewriteRule ^/foo/(.*)     /foo/                  [R=302,NC,NE,L]

我发现/foo/(.*)重写的优先级高于前面的规则,并且每个请求都重写为/foo/,甚至/foo/bar/test/。我担心的是,我将不得不为每个单独的比赛案例编写条件。我正在寻求一个更简单的解决方案。谢谢!

0 个答案:

没有答案