需要一些帮助才能将 LAST或L 标记与该RedirectMatch上的301一起添加。
我正在使用的代码,如下所示,但只有 301 状态
RedirectMatch 301 ^/(folder1|folder2)($|/.*) http://fedmich.com/$1$2
我已经尝试过这些变体但它们不起作用或内部服务器出错。
RedirectMatch 301 ^/(folder1|folder2)($|/.*) http://fedmich.com/$1$2 #not working
RedirectMatch [R=301,L] ^/(folder1|folder2)($|/.*) http://fedmich.com/$1$2 #SERVER error
RewriteRule ^/(folder1|folder2)($|/.*) http://fedmich.com/$1$2 [R=301,L] #No error, but not redirecting at all
我在我制作的每个测试代码上扫描页眉,因此它没有被“缓存”,也没有被错误地重定向。
谢谢你们
参考
RedirectMatch http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch
FLAGS - http://httpd.apache.org/docs/current/rewrite/flags.html
答案 0 :(得分:2)
您无法向RedirectMatch
指令添加重写标志。重写的东西是mod_rewrite的一部分,重定向的东西是mod_alias的一部分。如果你想使用'L',你可以改用mod_rewrite
RewriteEngine On
RewriteRule ^(folder1|folder2)($|/.*) http://fedmich.com/$1$2 [L,R=301]
但我不理解为什么你需要L
标志的根本问题。是否还有其他您不希望应用的规则?
答案 1 :(得分:1)
mod_rewrite中的最后一个标志(L)不会停止执行进一步的规则。它只是在while循环中充当continue
,并将重写的URI重新注入mod_rewrite
,以便可以执行进一步的规则。
如果你想跳过某些条件的重写规则,那么在其他规则之前有一个像这样的重写规则:
RewriteRule ^(foo|bar|baz)/ - [NC,L]
使用此规则,任何与/foo/
或/bar/
或/baz/
匹配的URI都不会受到此规则下任何重写规则的影响。