htaccess unhungry 正则表达式导致 500 错误

htaccess unhungry 正则表达式导致 500 错误

在我的本地 WAMP 服务器上,.htaccess 中的以下几行不会造成任何问题,并且可以执行我想要的操作:

RewriteEngine On
Options FollowSymLinks
RewriteRule ^foo/([0-9]+)/[a-z0-9-]*?$ foo.php?id=$1 [L]

当我将其上传到我的托管 (LAMP) 网站时,它会导致 500 错误(无论重写规则是否起作用)。经过多次修改后,修复方法是删除正则表达式中的 unhungry/lazy 修饰符,即:

RewriteEngine On
Options FollowSymLinks
RewriteRule ^foo/([0-9]+)/[a-z0-9-]*$ foo.php?id=$1 [L]

现在,在我所介绍的案例中,正则表达式的差异是否有用尚有争议,但在我看来,第一个例子是有效的,它确实在我的本地 WAMP 服务器上运行。那么有谁清楚我为什么会收到 500 错误吗?

答案1

在 foo.php 前添加斜线:

RewriteRule ^foo/([0-9]+)/[a-z0-9-]*?$ /foo.php?id=$1 [L]

或将重写规则从虚拟主机配置移动到.htaccess。

相关内容