2010-04-23 45 views
1

我一直在使用现有的网站,公司一直在运行,直到我完成开发新网站。Apache复杂正则表达式崩溃500错误

我被要求添加一些额外的功能来预订页面,将自动设置一个基于传递参数的预订按钮。

现有工作正则表达式如下:

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

与该网址,如下所示工作正常,并通过URL。

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错误。任何人都可以帮我解开这个问题吗?

+0

500指的是“有些事情不对看看错误日志!”。错误日志说什么? – Quentin 2010-04-23 13:50:07

回答

1

你可以只用第一重写和使用[QSA]标志追加查询字符串:

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

+0

绝妙的答案!似乎马上工作,我现在可以看到变数。我会投票,但我没有足够的重新排序:( – 2010-04-23 13:53:01

+0

很高兴你很高兴 - 接受它,如果你满意的答案。谢谢! – 2010-04-23 14:51:14