我有重写规则的问题
我的链接 是www.something / group / group_id / place / groupName 为了这 rewriteBase /
RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L]
有时我的网址可能会来www.something / group / group_id / groupName。
在这两种情况下我都要重写为group.php而我只需要groupid。如何在两种情况下编写重写规则?
答案 0 :(得分:0)
试试这个:
^group/(.+)(/|/.+)*$
匹配到
www.something /组/ GROUP_ID /地点/组名
www.something /组/ GROUP_ID /组名
我从未使用过RewriteRule,所以它没有经过测试。也许如果您在问题中添加“正则表达式”标记,您将获得更多答案; - )
答案 1 :(得分:0)
使用延迟量词或阻止每个匹配组匹配/
本身。当前的方式,第一组将尽可能多地匹配,从而导致不必要的结果。
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是数字的假设)