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

标签 regex apache .htaccess mod-rewrite

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

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

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

最佳答案

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

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

标志是:

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

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

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

关于regex - 我正在使用正则表达式重定向编辑 .htaccess 文件,如何将 "-"添加到\w 模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69820724/

相关文章:

javascript - jquery中字母数字和特殊字符的正则表达式

.htaccess - 具有智能感知支持的 Eclipse/Netbeans 的编辑器或插件

.htaccess - htaccess 将特定域的特定页面重定向到特定页面

apache - .htaccess 不适用于 Windows

python - 正则表达式 block 中的正则表达式

regex - 使用 sed 匹配模式并从该行删除到文件末尾

ruby - 在 Ruby 中使用正则表达式提取行的第一个单词

php - UTF-8贯穿始终

php - 通过 .htaccess 更改 PHP 中的 URL

php - UTF-8贯穿始终