我在 .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/