正则表达式重写停止在连字符但允许字符串中的连字符(.htaccess)

时间:2011-05-04 04:01:26

标签: regex .htaccess mod-rewrite

RewriteRule ^([^-]*)-([^-]*)-((foot|basket)(ball))-schedule(/)?$ /yearschedule.php?sport=$3&school=$1&year=$2&schedule=true [NC,L]是当前代码。

我傻了,并没有意识到篮球时间表也会包含一个连字符。如何更改此代码以允许重写正确识别篮球页面年份?

无法正常使用

http://domain.com/michigan-1999-00-basketball-schedule 

正确地工作

http://domain.com/michigan-1999-football-schedule

问题在于重写无法识别格式,因为在服务器的眼中,它会在1999- | here | 00停止篮球年,而不是通过。我真的不确定我应该使用什么代码来解决这个问题。

(正则表达式新手)

1 个答案:

答案 0 :(得分:1)

请尝试使用此行:

RewriteRule ^([^-]*)-([^-]*)-((foot|(?:[^-]*-)?basket)(ball))-schedule/?$ /yearschedule.php?sport=$3&school=$1&year=$2&schedule=true [NC,L]

它将匹配以下内容:

  • http://domain.com/michigan-1999-00-basketball-schedule
  • http://domain.com/michigan-1999-basketball-schedule
  • http://domain.com/michigan-1999-football-schedule