Сбой регулярного выражения в Apache с ошибкой 500 - PullRequest
1 голос
/ 23 апреля 2010

Я работал с существующим веб-сайтом, который работает в компании, пока я не закончу разработку нового сайта.

Меня попросили добавить некоторые дополнительные функции на страницы бронирования, которые будут автоматически устанавливать кнопку бронирования на основе переданных параметров.

Существующее рабочее регулярное выражение выглядит следующим образом:

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

Прекрасно работает с URL, как показано ниже, и проходит через 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 на сервере. Может ли кто-нибудь помочь мне разобраться с этим?

1 Ответ

1 голос
/ 23 апреля 2010

Вы можете просто использовать первое переписывание и добавить строку запроса с флагом [QSA]:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...