RedirectMatch 301 - 仅限目录排除文件,子目录,查询字符串

时间:2015-11-09 03:42:02

标签: apache .htaccess mod-rewrite url-redirection

我看了四周,但一切似乎与我想要的相反。我想要做的只是重定向目录URL之后的所有目录。所以我有这个工作

RedirectMatch 301 /blog/ http://www.mynewblog.com/

但是我需要它来排除(不重定向)在目录或文件和子目录之后附加的查询字符串。所以我想访问这些网址

http://www.myoldblog.com/blog/?wpdmact=process
http://www.myoldblog.com/blog/page/2
http://www.myoldblog.com/blog/page.php

/blog/之后的所有内容仍然会被重定向。那么有没有办法在htaccess文件中排除这个。谢谢,对不起,如果有人已经发布了答案,我找不到。

2 个答案:

答案 0 :(得分:1)

尝试:

RewriteEngine On

RewriteCond %{QUERY_STRING} !^wpdmact=process
RewriteCond $1 !^page/2
RewriteCond $1 !^page.php
RewriteRule ^blog/(.*)$ http://www.mynewblog.com/ [L,R=301]

如果要匹配查询字符串,则需要使用mod_rewrite而不是mod_alias,但是如果查询字符串为/blog/或者如果是wpdmact=process,这将重定向以page/2 *除8开头的所有内容以下路径为page.php或{{1}}。

答案 1 :(得分:0)

尝试以下方法:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^blog/?$ http://www.mynewblog.com/ [R,L]

请注意,要使上述规则有效,您需要启用mod_rewrite。虽然RedirectMatch模块提供了mod_alias指令,但重写是通过单独的模块完成的。