RedirectMatch 301如何排除URL

时间:2014-07-21 14:16:35

标签: wordpress .htaccess mod-rewrite redirect

我有一个RedirectMatch规则,如下所示:

RedirectMatch 301 ^/([0-9]+)/([0-9]+)/(.*)$ http://www.example.com/blog/$1/$2/$3

它旨在匹配格式化/年/月/ postname的任何现有WordPress帖子,并重定向到/ blog / year / month / postname。它工作正常,但我最近被要求在RedirectMatch中添加一个例外。以前,我只是直接在上面添加了排除规则,但在这种情况下它没有任何影响:

RewriteCond %{REQUEST_URI} !/2014/07/example-blog-post/$
RedirectMatch 301 ^/([0-9]+)/([0-9]+)/(.*)$ http://www.example.com/blog/$1/$2/$3

我还尝试在RedirectMatch规则本身中设置排除,但要么我做得不正确,要么就是不行。例如:

RedirectMatch 301 (^!/2014/07/example-blog-post/$|^/([0-9]+)/([0-9]+)/(.*)$) http://www.example.com/blog/$1/$2/$3

RedirectMatch 301 (^!/([0-9]+)/([0-9]+)/example-blog-post/$|^/([0-9]+)/([0-9]+)/(.*)$) http://www.example.com/blog/$1/$2/$3

我的问题是如何向这样的RedirectMatch添加一个(或多个)排除项。谢谢。

1 个答案:

答案 0 :(得分:0)

RewriteCondmod_rewrite的一部分,仅适用于RewriteRule

你可以像这样使用它:

RewriteEngine On

RewriteCond %{REQUEST_URI} !/2014/07/example-blog-post/ [NC]
RewriteRule ^([0-9]+)/([0-9]+)/(.*)$ http://www.example.com/blog/$1/$2/$3 [L,R=301]