Apache复杂正则表达式崩溃500错误

时间:2010-04-23 13:47:53

标签: php regex apache url url-rewriting

我一直在使用现有的网站公司,直到我完成新网站的开发。

我被要求在预订页面上添加一些额外的功能,这些功能将根据传递的参数自动设置预订按钮。

现有的正则表达式如下:

RewriteRule ^.+-(\d+)\.accommodation$ property_detail.php?id=$1

与下面的网址一样正常,并通过网址。

this-is-the-property-name.1234.accomodation

然而,作为一个快速的人,我正在努力做到以下几点:

this-is-the-property-name.1234.accomodation?override=true&start_date=2010-05-14&numbernights=2&sleeps=10&price=1012

我想出的正则表达式是:

RewriteRule ^.+-(\d+)\.accommodation\?override=(\w+)&start_date=(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])&numbernights=(\d+)&sleeps=(\d+)&price=(\d+)$ property_detail.php?id=$1&override=$2&start_date=$3-$4-$5&numbernights=$6&sleeps=$7&price=$8

正则表达式在RegexBuddy中传递有效 - 但它在服务器上不断导致500错误。任何人都可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以使用第一次重写并使用[QSA]标志附加查询字符串:

RewriteRule ^.+-(\d+)\.accommodation$ property_detail.php?id=$1 [QSA]