重写.htacces中的writerule以匹配我的GET参数需求


RewriteRule in .htacces to match my GET parameter needs

在我们的项目中,我们开始使用.htaccess来美化url。一切都工作得很好,直到我发现,我们的facebook登录不想工作,因为fb返回的GET参数,不能在我们的代码中捕获。

RewriteRule ^social/facebook$ /index.php/?action=social&authsocial=facebook

这条规则破坏了我需要的一切。它将http://www.mydomain.com/index.php/?action=social&authsocial=facebook变为http://www.mydomain.com/social/facebook

所以它解析2个GET参数。但当我使用facebook login时,它们会返回一堆GET参数。我怎么能制定规则,导致这样的结果呢http://www.mydomain.com/social/facebook?param1=12&qqq=13 ?

基本上保持第一部分现在的样子,但添加不恒定的GET参数作为旧风格?

需要追加查询字符串。您可以通过在RewriteRule末尾添加[QSA]来实现它:

RewriteRule ^social/facebook$ /index.php/?action=social&authsocial=facebook [QSA,L]
从文档:

修改查询字符串

默认情况下,查询字符串不加更改地传递。但是,您可以在包含查询字符串部分的替换字符串中创建url。只需在替换字符串中使用问号,以指示应将以下文本重新注入查询字符串中。当要擦除现有查询字符串时,请仅以问号结束替换字符串。要合并新旧查询字符串,请使用[QSA]标志。