2013-02-28 144 views
0

我有以下重写。Apache Url重写查询字符串SEO

RewriteRule ^/news/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /pagebase.php?pbid=3656&nid=$1&title=$2 [QSA,L,I] 

http://www.domain.com/news/1/new-event/

所以,上面的网址将被改写为:

http://www.domain.com/pagebase.php?pbid=3656&nid=1&title=new-event

这完美的作品。不过,我希望人们能够键入:

http://www.domain.com/news没有任何查询字符串,然后把它改写为这样的:

http://www.domain.com/pagebase.php?pbid=3656&nid=&title=

但是匹配失败,所以我得到一个404错误。 是否有反正我可以重写我的规则,使最后2个查询字符串选项可选。我能够使用多个重写规则找出它并将它们按正确的顺序排列,但我希望得到它,以便我可以使用一条规则来处理它。

+0

我猜这一点,但你可以沿着这个东西线实验:'重写规则^ /新闻(/ |([A-Z0-9 \ - ] +)/([a-z0-9 \ - ] +)/?)$ /pagebase.php?pbid=3656&nid=$2&title=$3 [QSA,L,I]'我所做的就是打破“新闻”之后的部分分为两个选项 - 可选斜线和其他任何内容或结构的其余部分。我相信整个括号表达式将是1美元,而两个附带的原始表达式将是2美元和3美元。 – 2013-02-28 23:10:02

回答

2

使用了两个重写规则:

RewriteRule ^/news/([a-z0-9\-]+)/([a-z0-9\-]+)/?$ /pagebase.php?pbid=3656&nid=$1&title=$2 [QSA,L,I] 
RewriteRule ^/news$ /pagebase.php?pbid=3656&nid=&title= [QSA,L,I]