25
我想mod_rewrite一个URL到另一个页面,但我也想要添加任何查询字符串保留。我该如何mod_rewrite并保留查询字符串?
RewriteEngine On
#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]
RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1
因此,如果用户访问apps/app1/
,index.php?app=app1
所示。 但是,我希望能够保留可选的查询字符串,以便访问apps/app1/?variable=x
返回index.php?app=app1&variable=x
。
什么mod_rewrite规则/条件会使这种情况发生?
谢谢,我没有意识到这很简单。 –
+1同意@DanielOakey ..我试图用正则表达式来破解一些东西,但它不工作.. –
澄清,这不是关于重写与重定向。 http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa说: 当替换URI包含查询字符串时,RewriteRule的默认行为是放弃现有的查询字符串,并将其替换与新生成的一个。使用[QSA]标志会导致查询字符串被合并。 –