用于传递参数的Mod重写规则

时间:2013-05-30 22:42:09

标签: regex .htaccess mod-rewrite

要重定向的htaccess文件,如下所示:

pagename.com/foo - > pagename.com/index.php?view=foo

它在htaccess中的代码是

RewriteRule ^foo$ index.php?view=foo [L]

但我也想使用参数。所以看起来会这样

pagename.com/foo?parameter1=bar - > pagename.com/index.php?view=foo&parameter1=bar

我创造的是:

RewriteRule ^foo\?([^-]+)$ index.php?view=foo&$1 [L]

但它无法正常工作 - 我被重定向到查看foo但未传递参数

任何想法?提前谢谢你

编辑:

RewriteRule ^foo/?([^-]+)$ index.php?view=foo&$1 [L,QSA] 

RewriteRule ^foo/?$ index.php?view=foo [L,QSA]

分别单独使用和

RewriteCond %{REQUEST_FILENAME} !-f

无法得到它

编辑2:

为同一个foo页面获得了另一个重写 - 刚刚将QSA添加到第一个如下:

RewriteRule ^foo$ index.php?view=foo [L,QSA]

并且有效

1 个答案:

答案 0 :(得分:4)

请记住,RewriteRule仅匹配REUQEST_URI而没有查询字符串。

为此目的,你只需要QSA标志:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^foo/?$ index.php?view=foo [L,QSA]

QSA - (查询字符串附加)用于附加现有查询字符串和新查询字符串。