【问题标题】:Get the Folder in which the index.php script is Php [closed]获取 index.php 脚本所在的文件夹 Php [关闭]
【发布时间】:2014-09-02 14:54:19
【问题描述】:

我正在使用AltoRouter 来匹配我的 php 应用程序的路由。显然即使调用index.php,如果应用程序不在域根目录下,你必须设置$router->setBasePath("/path/to/script");

我需要一个收集子文件夹的函数(如果应用程序在子文件夹中)。例如,如果路径是 /dir 并且有人调用 www.domain.com/dir,我可以知道它的 /dir 并调用 $router->setBasePath("/dir");

【问题讨论】:

  • 你能澄清一下吗?例如。脚本在哪里执行?当前文件的基本路径够吗?
  • 正如@anubhava 在下面的答案中所说,我想知道我们的 .htaccess 被调用的基本目录

标签: php .htaccess dir


【解决方案1】:

您可以在 .htaccess 中使用此规则:

RewriteEngine On

RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=BASE:%2]

这会将 `${ENV:BASE}" 设置为 .htaccess 所在的任何子目录。

然后你可以在 PHP 中使用:

$_SERVER["BASE"]

如果 .htaccess 在 /dir1/ 中,它将被设置为 /dir/

【讨论】:

  • 如果目录名是根目录,例如$thisDirectory = 'www',但在这种情况下,我们不需要->setBasepath(),甚至更糟的是/dir/,但域映射到/dir/,在这个如果我们也不需要->setBasePath
  • 如果这是放在DocumentRoot 中,那么$_SERVER["BASE"] 将是/
  • 是的,我终于想通了,如果可以的话,我可以把答案提高两次
  • 这在 URL 是 /base/whatever/path 时有效,但在 URL 是 /base/index.php/whatever/path 时无效。我们如何确保 index.php 是可选的?
  • @TylersSN:请您为此提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
相关资源
最近更新 更多