我配置了一些 lighttpd 重写,但其中一个不起作用。这是无法正常工作并导致出现白色(空白)页面的行:
url.rewrite-once = (
...
"^/search/([^\/]+)*/([^\/]+)*/([0-9]+)$" => "search.php?t=$1&k=$2&p=$3",
...
);
还要注意的是,它是唯一一个有 3 个参数的,本节中其余的参数都是 0-2。我在 lighttpd error.log 中发现了这个错误:
2011-01-07 17:13:09: (mod_rewrite.c.374) execution error while matching: -8
有人能帮忙吗?谢谢。
答案1
不要尝试在 mod_rewrite 中做太多事情。看起来你正在尝试在第三个括号中强制使用数字。将参数验证留在脚本中。
我可以保证这样一个事实:像这样的简单重写一次正则表达式可以对用斜杠分隔的三个参数起作用,正如您的目标一样:
"^/x50/(.*?)/(.*?)/(.*?)$" => "/script.php?b=$1&a=$2&f=$3&p=x50",
让正则表达式匹配为您工作。不用担心斜线,只需验证脚本内的参数即可。(无论如何您都必须这样做。)