2010-02-08 39 views
0

我想找到一个国防部重写解决方案,我的问题。国防部重写了很多参数

我有近6个参数,我传递给我的网址,我想重写。

让我展示的3个参数(X,Y,Z)

一个例子的URL是list.php的X = 1 & Y = 2 & Z = 3,从而一个规则将是

RewriteRule ^list/x/([^/\.]+)/y/([^/\.]+)/z/([^/\.]+)/?$ list.php?x=$1&y=$2&z=$3 

到目前为止罚款。

真正棘手的部分(至少对我来说)是,参数X,Y,Z都没有预测顺序,这样的网址可能是

list.php?z=2&x=4&y=9 

OR

list.php?y=2&z=4&x=9 

PLUS 的参数可能不是全部在一起 EX

list.php?z=4 

list.php?x=7&z=7 

或任何3个参数

组合

因此,对于3个参数,我必须写所有可能的组合(重写规则)

所以我的htaccess实际上是7页有6个参数,如果要添加还有一个人必须写出新规则并纠正所有其他人

是否有任何其他方式来完成它。

FOR EXAMPLE

如果国防部重写每个参数单独但是当一个以上的参数来自于URL的规则结合起来,每一个参数。

RewriteRule parameter x rewrite to x/$1 
RewriteRule parameter y rewrite to y/$2 

所以,当这两个参数过来成为X/$ 1/Y/$ 2

或者说我不必须写7页的规则,并且更容易修改

一些聪明的办法

我希望它明确

+0

如果参数可以按任意顺序排列,则不应将其作为路径信息传递。路径信息仅用于分层名称。 – outis 2010-02-08 11:08:46

+0

任何你不只是使用查询字符串的原因? – outis 2010-02-08 23:11:08

+0

搜索引擎优化是友好的原因 – ntan 2010-02-09 09:05:57

回答

0

像这样的东西应该工作

RewriteRule ^list/(?=(?:x/(\d+))?)(?=(?:y/(\d+))?) /list.php?x=$1&y=$2 

虽然它会产生空的参数,但可能是好的。

+0

感谢您的申请,但我不能有空参数 – ntan 2010-02-08 11:38:26

+0

所以这会打破? /list.php?x=&y=1 – ziya 2010-02-08 12:23:57