2010-09-01 54 views
0

我想将这四个获取变量(sch,val,lmt,ord)合并成一个很好看的url re_write。目前我已经在我的.htaccess文件下面,它工作在所有变量都包括在内,但是,如果我只输入了前两个变量(SCH & VAL)它打破:在查询字符串中获取变量re_writes

RewriteRule ^search/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ 
      search.php?sch=$1&val=$2&lmt=$3&ord=$4 [L] 

www.domain.com/搜索/城市/伦敦/ 5/asc工作 www.domain.com/search/City/London但这不是

+0

这里有一个重复。我没有投票结束,因为答案可能不是你正在寻找的东西:http://stackoverflow.com/questions/2219098/cleaning-up-nested-mod-rewrite-statements – 2010-09-01 13:02:59

回答

2

为什么不只是在其之前添加其他重写规则。 IE:

RewriteRule ^search/([^/]*)$ 
     search.php?sch=$1 [L] 
RewriteRule ^search/([^/]*)/([^/]*)$ 
     search.php?sch=$1&val=$2 [L] 
RewriteRule ^search/([^/]*)/([^/]*)/([0-9]*)$ 
     search.php?sch=$1&val=$2&lmt=$3 [L] 
RewriteRule ^search/([^/]*)/([^/]*)/([0-9]*)/([^/]*)$ 
     search.php?sch=$1&val=$2&lmt=$3&ord=$4 [L] 

这应该有效。不知道它是否是你想要的,但我并不认为这样做是“可能的”,而不只是做一个查询并将完整的查询字符串作为一行传给PHP端。

编辑

关于做的这一切在.htaccess与PHP是它需要较少的逻辑和你传递你想要什么到你的脚本中的正确值的好处。我的首选是使用上面的.htaccess。

2

你可以用这个来抓取整个路径作为文本和解析 www.domain.com/search/City/London/5/asc工程www.domain.com/search/City/London但是这并不

RewriteRule ^search/(.*)$ search.php?url=$1 
$paths=explode('/',$_GET('url')); 

输出
www.domain.com/search/City/London/5/asc

$路径=城市,伦敦,5,ASC

www.domain.com/search /城市/伦敦

$路径=城市,伦敦

您可以使用循环和对键/值...如果需要