如何解决htaccess重定向和别名根文件夹
我在webroot中有一个名为SET IDENTITY_INSERT ON
的文件夹,名为foo
。我正在尝试做一些事情。我希望可以通过.com/foo/*/
和foo
访问文件夹.com/bar/*
的内容。但是,我也想将流量从.com/bar/baz/*
重定向到.com/foo/*
,以便用户迁移到新端点。这样做的目的是在打开应用程序时也不要破坏当前用户。
这些规则在单独使用时有效,但是同时使用它们时,我只会得到一个重定向循环。我认为应该将更多标志与适当的标志组合在一起,但是我似乎无法弄清楚正确的组合。
.com/bar/*
编辑1:
RewriteRule ^foo/(.*)$ /bar/$1 [R=302,NC,L]
RewriteRule ^bar/baz/(.*)$ bar/$1 [QSA]
RewriteRule ^bar/(.*)$ foo/$1 [QSA]
和.com/bar/
将在内部正确指向真实目录.com/bar/baz/
。
但是'.com / bar foo
。com / bar / baz and
foo`。规则是否可以修正,或者强制尾随斜杠会更好?
will not point correctly to the real directory
解决方法
如果您使用的是Apache 2.4+,则可以使用END
:
RewriteEngine On
RewriteRule ^foo/(.*)$ /bar/$1 [R=302,NC,L]
RewriteRule ^bar/baz/(.*)$ bar/$1 [NC,END]
RewriteRule ^bar/(.*)$ foo/$1 [NC,END]
如果您使用的是旧版Apache,例如2.2然后使用:
RewriteCond %{THE_REQUEST} \s/+foo/ [NC]
RewriteRule ^foo/(.*)$ /bar/$1 [R=302,L]
RewriteRule ^bar/(.*)$ foo/$1 [NC,L]