如果文件夹名称不是 'blogparty' 且前缀以 'blog' 开头,则重定向子文件夹

Redirect subfolder if folder name is not 'blogparty' and prefix starts with 'blog'

如果子文件夹前缀为 'blog' 且 'X' 不等于 'party',我希望发生重定向。

这不应该重定向

http://www.hostname.co.uk/blogs/blogparty

这应该重定向

http://www.hostname.co.uk/blogs/blogX   

http://www.hostname.co.uk/blogs/X

其中 'X' 是任何不等于 'party' 的字符串。


这也适用于该目录的子目录,这意味着它也应该被重定向。

http://www.hostname.co.uk/blogs/blogX/blah/index.php

http://www.hostname.co.uk/blogs/X/blah/index.php

这是我尝试的重定向所有内容,包括 'blogparty'

# Redirect blogBLOGNAME to BLOGNAME excluding blogparty
RewriteCond %{REQUEST_URI} !^/blogs/blogparty/.*
RewriteCond %{REQUEST_URI} !^/blogs/blogparty$
RewriteRule ^/blogs/blog(.*) /blogs/ [R=301,L]

你的规则应该有效。我相信在您显示的规则下方还有其他路由规则。要处理这个问题,你可以让你的规则基于 THE_REQUEST 而不是(在其他规则之后不会改变):

RewriteCond %{THE_REQUEST} !\s/+blogs/blogparty(/\S*)?\s [NC]
RewriteRule ^(blogs)/blog(.+)$ // [R=302,L,NC,NE]