htaccess:如何重写特定的GET变量?

时间:2012-02-07 01:13:39

标签: .htaccess mod-rewrite

对于主菜单,我有大约3个标题catagoty的 我喜欢静态重写它们。

这是我现在使用的代码:

RewriteCond %{QUERY_STRING} !dep= [NC]    
RewriteRule ^([0-9a-zA-Z-]+)/?$ index.php?dep=$1 [NC,L,QSA]   

www.hello.com/car / 会给// $ _ GET var //?dep = car

简单如何让我:www.hello.com/car/ford/
让'返回'?dep = car& id = ford

现在让我说我知道我正在使用的3'?dep'参数。你怎么写的:

If www.hello.com/? == car || boat || train  /  
rewrite to ?dep=  
else
rewrite to ?id= 

/*
In this example giving www.hello.com/ford/  
would return id=ford     
but, www.hello.com/boat/  
would return dep=boat 
*/

1 个答案:

答案 0 :(得分:2)

  

简单如何让我:www.hello.com/car/ford/让'返回'?dep = car& id = ford

在规则之后添加此规则:

RewriteRule ^([0-9a-zA-Z-]+)/([0-9a-zA-Z-]+)/?$ index.php?dep=$1&id=$2 [NC,L,QSA]   
  

现在让我说我知道我正在使用的3'?dep'参数。你怎么写的:

您需要更改此条件,因为您需要检查“id”。然后规则将特别匹配“汽车”,“船”或“火车”:

RewriteCond %{QUERY_STRING} !(id|dep)= [NC]    
RewriteRule ^(car|boat|train)/?$ index.php?dep=$1 [NC,L,QSA]

为其余的添加第二条规则:

RewriteCond %{QUERY_STRING} !(id|dep)= [NC]    
RewriteRule ^([0-9a-zA-Z-]+)/?$ index.php?id=$1 [NC,L,QSA]