我正在使用正则表达式重定向编辑 .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
并立即停止整个重写过程。
我在 .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
并立即停止整个重写过程。