mod_rewrite,不同的get参数,如何区分

时间:2014-03-23 18:56:53

标签: .htaccess mod-rewrite

很抱歉要问一个明显的问题,但我已经搜索了很多,似乎无法让这个工作。

我正在重写的两个网址示例:

mydomain.com/search/searchword/
mydomain.com/index.php?page=search&sw=searchword
AND
mydomain.com/lists/12345/
mydomain.com/index.php?page=lists&id=12345

我可以让其中一个与之合作:

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?page=$1&sw=$2

但如果我再添加一行,则不适用于第二行:

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?page=$1&sw=$2
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?page=$1&id=$2

我可以把一些RewriteCond说,如果一个参数是id,那么这样做,如果是sw,那么这样做?或者你通常如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

RewriteRule ^([a-zA-Z0-9]+)/([0-9]+)/$ index.php?page=$1&id=$2 
RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/$ index.php?page=$1&sw=$2

以上代码应该有效。我所做的是将id行移到sw行之上,并将第二个括号中的内容从([a-zA-Z0-9]+)更改为([0-9]+),因为id只会有数字而不是字母。因此,第一行将被执行(我不确定它是否是正确的术语),如果第二个文件夹中只有数字,那么它将是一个id,否则它是一个搜索词,用那个。

编辑:

RewriteRule ^lists/([a-zA-Z0-9]+)/$ index.php?page=$1&id=$2 
RewriteRule ^search/([a-zA-Z0-9]+)/$ index.php?page=$1&sw=$2