将以下两条规则合并为一条的最佳方法是什么,以便用户可以访问domain.com/schedule以及domain.com/schedule/ {day}
规则应该转发到同一个控制器,然后我将检查参数
RewriteRule ^schedule/?$ index.php?_orn_shows_action=view-schedule [NC,QSA,L]
RewriteRule ^schedule/([a-zA-Z0-9-]+)/?$ index.php?_orn_shows_action=view-schedule&day=$1 [NC,QSA,L]
答案 0 :(得分:2)
如果你不关心是否得到没有值的day
参数,你可以这样做:
RewriteRule ^schedule(/(([a-zA-Z0-9-]+)/?)?)?$ index.php?_orn_shows_action=view-schedule&day=$3 [NC,QSA,L]
这将捕获这些变化:
/schedule
/schedule/
/schedule/day
/schedule/day/
如果您想确保不要获取空的day
参数,请执行以下操作:
RewriteCond $3 ="" [OR]
RewriteCond &day=$3 ^(.*)$
RewriteRule ^schedule(/(([a-zA-Z0-9-]+)/?)?)?$ index.php?_orn_shows_action=view-schedule&day=$3 [NC,QSA,L]
最后,如果您不希望从这些网址上的浏览器中获取查询字符串,我会删除QSA
标记,因为有人会/schedule/monday?day=1
设置{{1}等于1,而不是“星期一”。有办法防止这种情况,但是如果你不需要查询字符串,那么忽略它就更容易了。
答案 1 :(得分:0)
也许你不必把它组合成一个 - 尝试切换他们的位置,第二个作为第一个和第一个之后,所以你的第一个规则将不会捕获应由第二个规则分析的请求。