查询字符串的 Apache 重定向

Apache redirect for query string

我对 Apache 重定向有疑问。请在下面查看我的场景。

我有一个 URL sub.example.com 需要重定向到 www.example.com/index.php?r=something。当我在浏览器中加载 www.example.com/index.php?r=something 时,css 文件是从 www.example.com/css/file.css 加载的。所以我不能为 sub.example.com 写一个简单的重定向到 www.example.com/index.php?r=something 因为它会导致 css 文件为 404。我通过应用以下重定向规则解决了这个问题并且它工作正常(意味着 css 文件也被加载)。

RewriteEngine On
RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ http://www.example.com/index.php?r=something [P]

我现在的问题是,当我输入 sub.example.com/?success=1 时,它应该重定向到 www.example.com/index.php?r=something&success=1。上面的规则会满足这个吗?如果不能,请您帮助相应地修改规则。提前致谢。

经过一番谷歌搜索,我找到了解决方案。有一个 QSA(查询字符串附加)标志,它将强制重写引擎将替换字符串的查询字符串部分附加到现有字符串。所以我不得不将该标志添加到现有的重写规则中,如下所示。

RewriteRule ^(.+/?)?(/|\.htm|\.php|\.html|/[^.]*)$ http://www.example.com/index.php?r=something [P,QSA]

瞧,问题已解决。

谢谢,