2

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¶meter1=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]

它有效

4

1 回答 1

4

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

QSA为此,您只需要标志:

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

QSA -(查询字符串追加)用于将现有查询字符串附加到新的查询字符串。

于 2013-05-30T22:43:36.417 回答