有条件的.htaccess规则
问题描述:
什么是以下两条规则结合成一体,使用户可以访问domain.com/schedule也domain.com/schedule/{day}有条件的.htaccess规则
的最好方法规则应该转发到相同的控制器,在那里我会再检查参数
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]
答
也许你没有把它结合到一个 - 尝试切换自己的立场,第二个第一和第一之后,让你的第一条规则不会捕获应该由第二条规则分析的请求。
答
如果你不关心你是否得到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]
最后,如果您不希望从这些URL上的浏览器获取查询字符串,我会放弃QSA
标记,因为有人前往/schedule/monday?day=1
最终会将day
设置为1,而不是“星期一”。有办法阻止这种情况发生,但如果你不需要查询字符串,只需要忽略它就容易了。
这很好,谢谢你;-) – 2010-08-24 15:10:07