.htaccess Htaccess-从现有重写中排除一个单词

.htaccess Htaccess-从现有重写中排除一个单词,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我的htaccess文件中包含以下内容: # drop tags #RewriteCond %{THE_REQUEST} (.*)designs/(.*)/?tag=shirts [NC] #RewriteRule .* /designs/%2/ [R=301,L] RewriteCond %{THE_REQUEST} (.*)designs/([^?]+)\?tag=[^&]* [NC] RewriteRule .* /designs/%2? [R=301,L] # extern

我的htaccess文件中包含以下内容:

# drop tags
#RewriteCond %{THE_REQUEST} (.*)designs/(.*)/?tag=shirts [NC] 
#RewriteRule .* /designs/%2/ [R=301,L]
RewriteCond %{THE_REQUEST} (.*)designs/([^?]+)\?tag=[^&]* [NC] 
RewriteRule .* /designs/%2? [R=301,L]

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+product/search/\?tag=([^\s&]+) [NC]
RewriteRule ^ /%1/? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/designs/ [NC]
RewriteRule ^([^/]+)/?$ product/search/?tag=$1 [L,QSA]

RewriteCond %{QUERY_STRING} ^search= [NC]
RewriteRule ^designs/.*$ /$0? [L,R=301,NC]

RewriteCond %{QUERY_STRING} ^mfp= [NC]
RewriteRule ^designs/ %{REQUEST_URI}? [L,NC,R=301,NE]
我的主题支持博客,但启用后(默认为example.com/blog/),当我单击菜单中的博客链接时,它会将我带到一个页面,上面显示“没有符合搜索条件的产品”。当我删除上面列出的htaccess规则时,博客页面(其中包含文章列表)工作正常,因此肯定是这样


如何将“blog”一词从htaccess规则中排除,从而使此问题消失?

经过几个小时的修补,我成功地修复了它。解决办法是:

# external redirect from actual URL to pretty one
RewriteCond %{REQUEST_URI} !^/blog($|/)$
RewriteCond %{THE_REQUEST} \s/+product/search/\?tag=([^\s&]+) [NC]
RewriteRule ^ /%1/? [R=301,L,NE]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_URI} !^/blog($|/)$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/designs/ [NC]
RewriteRule ^([^/]+)/?$ product/search/?tag=$1 [L,QSA]
此解决方案还处理/blog(不带尾随/)

希望这对将来的人有帮助