Apache 如何在htaccess文件中写入重写规则

Apache 如何在htaccess文件中写入重写规则,apache,mod-rewrite,Apache,Mod Rewrite,我对重写规则有问题 我的链接 是www.something/group/group\u id/place/groupName 为此 重写基/ RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L] 有时我的url可能来自www.something/group/group\u id/groupName 在这两种情况下,我都必须重写为group.php,并且只需要groupid。如何编写重写规则以在这两种情况下都有效?尝试以下

我对重写规则有问题

我的链接 是www.something/group/group\u id/place/groupName 为此 重写基/

RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L]
有时我的url可能来自www.something/group/group\u id/groupName

在这两种情况下,我都必须重写为group.php,并且只需要groupid。如何编写重写规则以在这两种情况下都有效?

尝试以下方法:

^group/(.+)(/|/.+)*$
它与 www.something/group/group\u id/place/groupName www.something/group/group\u id/groupName


我从未使用过重写规则,所以它没有经过测试。如果你在你的问题上加上Regex标签,也许你会得到更多的答案-

使用惰性量词或阻止每个匹配组匹配/本身。按照当前的方式,第一组将尽可能多地匹配,从而产生不想要的结果

RewriteRule ^group/(.*?)/(.*?)/(.*?)$ /group.php?gid=$1 [QSA,NC,L]
RewriteRule ^group/([^\/]*)/([^\/]*)/([^\/]*)$ /group.php?gid=$1 [QSA,NC,L]
一种更好的方法,让人们省去不必要的部分:不需要在服务器端评估结果,您甚至可以这样做:

 RewriteRule ^group/(\d+)(/.*)?$ /group.php?gid=$1 [QSA,NC,L]
这是基于您的组id是一个数字的假设