我努力将.htaccess规则转换为PHP正则表达式if语句,这里是htaccess中的规则
RewriteRule ^user/([a-zA-Z0-9-]+)$ user.php?slug=$1 [L]
现在对于PHP我已经尝试了几种方法,因为我对REGEX不太好看似乎没有用。
if(preg_match("#user\/(a-z_\-0-9)\$#",$request)) {
exit("okKKKKKK");
} else {
exit("no");
}
$ request是" / user / test-user"谁能帮我一把?
答案 0 :(得分:3)
您可以使用.htaccess
中的相同正则表达式,只需在用户之前放置正斜杠。
if (preg_match("#^/user/([a-zA-Z0-9-]+)$#", $request)) { ...
答案 1 :(得分:1)
这不是正确的翻译。使用此等效的preg_match
正则表达式:
preg_match("#^/user/([a-zA-Z0-9-]+)$#", $request);
请记住.htaccess
中的重写规则缺少前导斜杠,因为.htaccess
是每个目录指令。
答案 2 :(得分:0)
应该是这样的
if(preg_match("#^\/user\/[a-z_\-0-9]+\$#i",$request)) {
exit("okKKKKKK");
} else {
exit("no");
}
在我看来,如果用户存在,您还应该跟踪大写(i)修饰符并将301重定向设置为小写网址