Я настроил несколько перезаписей lighttpd, из которых одна не работает. Это строка, которая работает не так, как должна, и вызывает отображение белой (пустой) страницы:
url.rewrite-once = (
...
"^/search/([^\/]+)*/([^\/]+)*/([0-9]+)$" => "search.php?t=$1&k=$2&p=$3",
...
);
Также обратите внимание, что это единственный параметр с 3 параметрами, все остальные в разделе имеют 0-2. Я нашел эту ошибку в журнале ошибок lighttpd:
2011-01-07 17:13:09: (mod_rewrite.c.374) execution error while matching: -8
Может кто поможет? Спасибо.
Не пытайтесь делать слишком много в mod_rewrite. Похоже, вы пытаетесь ввести только цифры в третьей скобке. Оставьте проверку параметров внутри скрипта.
Я могу поручиться за тот факт, что простое регулярное выражение с однократной перезаписью, подобное этому, работает с тремя параметрами, разделенными косой чертой, поскольку вы, похоже, стремитесь:
"^/x50/(.*?)/(.*?)/(.*?)$" => "/script.php?b=$1&a=$2&f=$3&p=x50",
Позвольте сопоставлению регулярных выражений работать на вас. Не беспокойтесь о косых чертах, просто проверьте параметры внутри скрипта. (Как и в любом случае.)