我正在使用Mod_rewrite清除链接,但只能使用slug顺利运行。
不幸的是,当有多个slu ..时,它不起作用。
仅适用于1个slug,例如[working]:
location / {
if (!-e $request_filename){
rewrite ^/(.+)$ /index.php?id=$1 last;
}
}
只有2个slu [[不工作]:
location / {
if (!-e $request_filename){
rewrite ^/(.+)$ /index.php?id=$1 break;
rewrite ^/(.+)/(.+)$ /index.php?id=$1&idno=$2 last;
}
我怎样才能做多个?
答案 0 :(得分:0)
您需要先放置更具体的正则表达式。你的正则表达式^/(.+)$
将匹配one-slug和two-slug case,所以第二个语句永远不会被测试。
此外,您应该将rewrite...last
用于两个重写语句,因为您正在重写将在另一个location
块中处理的PHP脚本。
例如:
location / {
if (!-e $request_filename){
rewrite ^/(.+)/(.+)$ /index.php?id=$1&idno=$2 last;
rewrite ^/(.+)$ /index.php?id=$1 last;
}
}
有关详情,请参阅this document。