我正在使用正则表达式重定向编辑 .htaccess 文件,如何将“-”添加到 \w 模式?

I'm editing an .htaccess file with regex redirects, how to add "-" to \w pattern?

我在 .htaccess 文件中有以下重定向:

RewriteRule ^tasks/(\w+)/?$ /projects.php?task=

如果我尝试访问 URL,例如 /tasks/nov-1,它会说找不到对象,因为 \w 不接受“-”。你能帮忙在上面的重定向规则中添加“-”吗?

您可以使用此规则接受连字符,同时建议在此规则中使用正确的标志:

RewriteRule ^tasks/([\w-]+)/?$ projects.php?task= [L,QSA,NC]

标志是:

  • L 用于最后一条规则
  • QSA 用于查询字符串追加
  • NC 忽略大小写

请注意,L 标志标记了 mod_rewrite 循环当前迭代的最后一条规则。它的行为类似于 while 循环中的 continue 而不是 break,因此它不会立即结束循环。如果请求已被重写,重写过程将重新开始。因此,其他规则可能会在带有 L 标志的规则之后应用。

在 Apache 2.4 上有一个 END 标志,其作用类似于 break 并立即停止整个重写过程。