500 hata ile çökmesini Apache karmaşık regex

1 Cevap php

Ben yeni bir site gelişmekte bitirene kadar dışarı şirket çalışan mevcut bir web sitesi ile çalışıyoruz.

Ben otomatik olarak geçirilen parametrelere dayalı bir rezervasyon düğmesi koyacaktır rezervasyon sayfaları için bazı ek işlevsellik eklemek için istendi ettik.

Aşağıdaki gibi mevcut çalışma regex olduğunu:

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

Hangi aşağıdaki gibi bir url ile çalışıyor ve URL geçer.

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

Ancak hızlı bir sustalıyla olarak, ben aşağıdakileri yapmak için çalışıyorum:

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

Bunun için birlikte geldi regex oldu:

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

Ancak sunucu üzerinde bir 500 hata neden tutar - regex RegexBuddy geçerli olarak geçiyor. Herkes bana bu birinin etrafında başımı almak yardımcı olabilir misiniz?

1 Cevap

Sadece ilk rewrite kullanın ve [QSA] bayrağı ile sorgu dize eklemek olabilir:

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