【问题标题】:Apache complex regex crashing with 500 errorApache 复杂的正则表达式因 500 错误而崩溃
【发布时间】:2010-04-23 21:51:02
【问题描述】:

我一直在与公司运营的现有网站合作,直到我完成新网站的开发。

有人要求我向预订页面添加一些附加功能,这些功能将根据传递的参数自动设置预订按钮。

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

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

与下面的 url 配合使用并通过 URL。

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

但是,作为一个快速的 shiv,我正在尝试执行以下操作:

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 错误。谁能帮我弄清楚这个问题?

【问题讨论】:

  • 500 表示“出了点问题!查看错误日志!”。错误日志说明了什么?

标签: php regex apache url url-rewriting


【解决方案1】:

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

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

【讨论】:

  • 绝妙的答案!似乎马上就可以了,我现在可以看到变量了。我会投票,但我还没有足够的声誉:(
  • 很高兴您很高兴 - 如果您满意,请接受它。谢谢!
猜你喜欢
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多