用 if 和 else 重写

Rewrite with if and else

我必须将 if 和 else 添加到我的重写规则中。

我的重写是这样的

  RewriteCond %{THE_REQUEST} \ /+catalogsearch/result/\?cat=(.*)&q=([^&\ ]+)
RewriteRule ^ /q_%2_cat_%1? [L,NE,R=301]
RewriteRule ^q_(.*)_cat_(.*)?$ /index.php/catalogsearch/result/?q=&cat= [QSA,P,NC]

如果 cat 为空,我想改成这个

RewriteCond %{THE_REQUEST} \ /+catalogsearch/result/\?cat=&q=([^&\ ]+)
RewriteRule ^ /q_%1? [L,NE,R=301]
RewriteRule ^q_(.*)$ /index.php/catalogsearch/result/?q= [QSA,P,NC]

可能吗?提前致谢

只需将两个规则一个接一个地放置,而不是使用 .*,而是使用 .+。此外,您不需要 P 标志,而是使用 L 标志来结束重写:

RewriteCond %{THE_REQUEST} \ /+catalogsearch/result/\?cat=(.+)&q=([^&\ ]+)
RewriteRule ^ /q_%2_cat_%1? [L,NE,R=301]
RewriteRule ^q_(.+)_cat_(.+)$ /index.php/catalogsearch/result/?q=&cat= [QSA,L,NC]

RewriteCond %{THE_REQUEST} \ /+catalogsearch/result/\?cat=&q=([^&\ ]+)
RewriteRule ^ /q_%1? [L,NE,R=301]
RewriteRule ^q_([^_]+)$ /index.php/catalogsearch/result/?q= [QSA,L,NC]