【问题标题】:Codeigniter run external PHP Script in a separated FolderCodeigniter 在单独的文件夹中运行外部 PHP 脚本
【发布时间】:2014-03-04 11:14:42
【问题描述】:

我对 Codeigniters 安全有疑问。

我的 Codeigniter 安装有 Application Folder, System FolderAssets Folder

在我的资产文件夹中有一个第三方 PHP 脚本。

我想调用这个脚本:DOMAIN/assets/FOLDEROFEXTERNALSCRIPT/EXTERNALPHPSCRIPT.php

有没有一个选项可以让我在没有控制器的情况下通过 URL 调用这个文件?

【问题讨论】:

  • 当您尝试通过 URL 访问该脚本时会发生什么。你得到什么错误?
  • 为什么不通过url访问文件?
  • @Pattle 如果我调用文件,我会收到 404 错误。如果我改变我的 htaccess.我收到内部服务器错误。但问题不在于我的脚本,我用一个简单的 echo 脚本对其进行了测试谢谢

标签: php codeigniter codeigniter-2


【解决方案1】:

我希望你已经从你的 url 中删除了 index.php,这可以通过在 DOMAIN 根目录的 .htaccess 文件中添加以下重写规则来完成,或者通过在虚拟主机中添加这些重写规则来完成。

以下规则意味着,将每个 url 重写为 index.php?params 除非当前 url 包含“index.php 或其中的资产”,现在您可以将任何静态内容甚至核心 PHP 脚本放在此文件夹中直接访问,图片中有 CI。

在您的 .htaccess 文件中,只需在绕过规则中添加“assets”文件夹以及 index.php

RewriteEngine on
RewriteCond $1 ^!(index\.php|assets)
RewriteRule ^(.*)$ /index.php?$1 [L,QSA] 

【讨论】:

  • 嗨,谢谢。这是目前我的 htaccess 文件: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(. *)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] 我已经添加了你的 sn -p 到。但我收到 404 错误:
  • 评论您当前拥有的所有重写规则,只需输入上述 3 行。只需将“#”放在 .htaccess 文件中每一行的开头即可进行评论。
  • 这样它可以工作,但我变成了内部服务器错误。这不是脚本问题 我用一个简单的 echo 脚本对其进行了测试。 你知道怎么回事吗?谢谢
猜你喜欢
  • 2011-10-21
  • 2021-08-25
  • 1970-01-01
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多