2025年php rewriterule 规则,如何将一条RewriteCond 对应多个RewriteRule规则

php rewriterule 规则,如何将一条RewriteCond 对应多个RewriteRule规则RewriteCond 是对 RewriteRule 的条件筛选 一般情况下一个 RewriteRule 前面有多个 RewriteCond 我们想让 bbs 这个子域名下的链接访问 bbs 这个目录 而其他子域名则访问 web 这个子目录 于是有了下面这种写法 RewriteCond HTTP HOST bbs heycode com RewriteRule news d html

RewriteCond是对RewriteRule的条件筛选,一般情况下一个RewriteRule前面有多个RewriteCond,我们想让bbs这个子域名下的链接访问bbs这个目录,而其他子域名则访问web这个子目录,于是有了下面这种写法。

RewriteCond %{HTTP_HOST} ^bbs.heycode.com$

RewriteRule ^news-(d+).html$ /bbs/news/view.php?id=$1

RewriteRule ^news-(d+).html$ /web/news/view.php?id=$1

RewriteCond %{HTTP_HOST} ^bbs.heycode.com$

RewriteRule ^news/list-(d+)-(d+).html$ /bbs/news/list.php?id=$1&page=$2

RewriteRule ^news/list-(d+)-(d+).html$ /web/news/list.php?id=$1&page=$2

但是这样看上去也未免太复杂了,规则多了就会写很多次RewriteCond。那么,有没有其他的写法呢,答案肯定是有的。如下

RewriteCond %{HTTP_HOST} !^bbs.heycode.com$

RewriteRule .* – [S=2]

RewriteRule ^news-(d+).html$ /bbs/news/view.php?id=$1

RewriteRule ^news/list-(d+)-(d+).html$ /bbs/news/list.php?id=$1&page=$2

RewriteRule ^news-(d+).html$ /web/news/view.php?id=$1

RewriteRule ^news/list-(d+)-(d+).html$ /web/news/list.php?id=$1&page=$2

这里修改了两处地方

1、在RewriteConf条件前面加了!取反符号,取原先条件的相反条件,

2、在RewriteRule最前面添加了一行 RewriteRule .* – [S=2]

这句,表示中止当前的匹配规则,并跳过下面的两条RewriteRule语句

编程小号
上一篇 2025-03-22 18:01
下一篇 2025-04-05 20:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/130917.html