htaccess重写传递两个变量或一个取决于两者是否可用?

时间:2012-03-26 08:43:21

标签: apache .htaccess mod-rewrite rewrite

我想将第一个目录作为变量传递,子目录作为另一个变量传递。

对于包含两个目录的网址(/ something / something2)时,它会起作用,但当我尝试只使用一个(/某些东西)时,我会收到错误404.

RewriteRule ([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

当category2不可用时,如何才传递category1?

2 个答案:

答案 0 :(得分:2)

几个解决方案:

多个规则(更容易理解但速度稍慢):

RewriteRule ^([^/]+) /posts/?category2=$1 [L,QSA]
RewriteRule ^([^/]+)/([^/]+) /posts/?category2=$1&category2=$2 [L,QSA]

单一规则:

RewriteRule ^([^/]+)(/([^/]+))? /posts/?category2=$1&category2=$3 [L,QSA]

这里URL(/ something2)的第二部分是可选的。请注意 - $ 2已更改为$ 3.

答案 1 :(得分:0)

也许试试这个:

RewriteRule ([^/]+)(/([^/]+))? /posts/?category2=$1&category2=$3 [L,QSA]