Mod 重写传递参数规则

and*_*wpo 2 regex .htaccess mod-rewrite

htaccess 文件重定向如下:

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

它在 htaccess 中的工作代码是

RewriteRule ^foo$ index.php?view=foo [L]
Run Code Online (Sandbox Code Playgroud)

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

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

我已经创建的是:

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

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

有任何想法吗?先感谢您

编辑:

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

RewriteRule ^foo/?$ index.php?view=foo [L,QSA]
Run Code Online (Sandbox Code Playgroud)

既可以单独使用,也可以与

RewriteCond %{REQUEST_FILENAME} !-f
Run Code Online (Sandbox Code Playgroud)

无法得到它

编辑2:

对同一 foo 页面进行了另一个重写规则 - 只是将 QSA 添加到第一个页面,如下所示:

RewriteRule ^foo$ index.php?view=foo [L,QSA]
Run Code Online (Sandbox Code Playgroud)

它有效

anu*_*ava 5

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

QSA为此,您只需要标志:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^foo/?$ index.php?view=foo [L,QSA]
Run Code Online (Sandbox Code Playgroud)

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