1

碰巧我需要紧急修复 Codeigniter 问题,而我并不熟悉该工具。

简单的问题:我如何允许从 Facebook 回来的链接,http://www.xxx.de/?fb_action_ids=4811819099741&fb_action_types=og.likes&fb_source=timeline_og&action_object_map=%7B%224811819099741%22%3A447766801925104%7D&%22181909974 %3A%22og.likes%22%7D&action_ref_map=%5B%5D

没有创建臭名昭著的您提交的 URI 包含不允许的字符-我可以通过设置 $config['permitted_uri_chars'] 来修复它-并且由于 CI 的内部重定向而没有 404。

我很想了解该问题的快速解决方法。

4

3 回答 3

1

如果可以使用.htaccess,您可以重定向到任何地方。这避免了任何 CI 的复杂性。

RewriteCond %{QUERY_STRING} .
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^ /index.php/? [L]

https://stackoverflow.com/a/4227616/183254


更新:nginx 可能的工作重写

if ($args ~ fb_action_ids=(\d+)){
    rewrite ^ http://example.com/ permanent;
}
于 2012-11-07T19:40:41.790 回答
1

在 application/config/config.php 中设置这些变量:

$config['allow_get_array']      = TRUE;
$config['enable_query_strings'] = TRUE; // This is normally FALSE

$config['permitted_uri_chars']必要时进行调整。我a-z 0-9~%.:_\-#!的几乎适用于所有东西。

我不确定您需要对 fb 数据做什么,所以我只能说,通过设置这些选项,理论上您应该能够访问 facebook 提供的 get var。

于 2012-11-07T19:47:20.117 回答
1

codeigniter 期望 URI 的第一部分是它加载的控制器,然后第二部分是方法,之后的每个段都是被加载的方法的参数。一个快速的解决方案是像在 MVC3 中一样使用正则表达式设置路由,并将其指向控制器和方法。然后,您可以从那里解析 uri。

匹配 ?fb_action_ids 并将其更改为 /controller/method/?fb_action_ids 并从那里开始。也许有了更多信息,我可以为您提供更多帮助,但如果这对您有用,这应该是无需重新配置一堆东西即可重新启动和运行的最快方法。

http://ellislab.com/codeigniter/user_guide/general/routing.html

于 2012-11-07T21:01:52.587 回答