【问题标题】:Make Codeigniter 2.1.3 allow a Facebook backlink使 Codeigniter 2.1.3 允许 Facebook 反向链接
【发布时间】:2012-11-07 18:47:20
【问题描述】:

碰巧我需要紧急修复一个 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&action_type_map=%7B%224811819099741%22%3A%22og.likes%22%7D&action_ref_map=%5B%5D

没有创建任何臭名昭著的您提交的 URI 包含不允许的字符 - 我可以通过设置 $config['permitted_uri_chars'] 来解决这个问题 - 由于 CI 的内部重定向,所以也没有 404。

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

【问题讨论】:

  • 你能让反向链接命中控制器吗?即domain.com/back/?fb....etc?
  • @Brendan:抱歉,作为一个从未接触过 Codeigniter 的 .NET 人员,我什至不知道该去哪里找。我真的只是在寻找一个能活到明天的快速解决方案......
  • 我的意思是,您可以修改 facebook 创建链接的方式吗?还是参数总是直接放在根目录中?
  • 不,不能影响 Facebook,而且已经有很多赞了。

标签: php codeigniter


【解决方案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;
}

【讨论】:

【解决方案2】:

在 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。

【讨论】:

  • 感谢您,但我们采用了 Stormdrain 的重写想法。事实上,正如我在问题中试图说的那样,我们不需要 fb var,我们只是不想产生错误或 404。
【解决方案3】:

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

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

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

【讨论】:

  • 谢谢!我们采用了重写解决方案,但我会将其转发给从事 CI 工作的人。听起来像一个更干净的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多