2010-05-14 190 views
0

我有重写规则有问题如何写htaccess文件重写规则

我的链接 是www.something /组/ GROUP_ID /位/组名 此 rewriteBase/

RewriteRule ^group/(.*)/(.*)/(.*)$ /group.php?gid=$1 [QSA,NC,L] 

有时候我的网址可能会来自www.something/group/group_id/groupName。

在这两种情况下,我必须重写到group.php,我只需要groupid。如何编写重写规则以在这两种情况下工作?

回答

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是一个数字的假设)

+0

感谢戳。这是工作。我应用了你最后的建议 – roopesh 2010-05-14 11:32:43

0

试试这个:

^group/(.+)(/|/.+)*$ 


www.something /组/ GROUP_ID /地方匹配/组名
www.something /组/ GROUP_ID /组名

我从来没用过RewriteRule,所以没有经过测试。也许如果您将“正则表达式”标记添加到您的问题中,您将得到更多答案;-)