获取index.php脚本所在的文件夹
我正在使用获取index.php脚本所在的文件夹,php,.htaccess,dir,Php,.htaccess,Dir,我正在使用AltoRouter为我的php应用程序匹配路由。显然,即使调用了index.php,如果应用程序不在域根目录中,您也必须设置$router->setBasePath(“/path/to/script”) 我需要一个收集子文件夹的函数(如果应用程序在子文件夹中)。例如,如果路径是/dir,有人调用www.domain.com/dir,我可以知道它的/dir,并调用$router->setBasePath(“/dir”)您可以在.htaccess中使用此规则: RewriteEngine
AltoRouter
为我的php应用程序匹配路由。显然,即使调用了index.php
,如果应用程序不在域根目录中,您也必须设置$router->setBasePath(“/path/to/script”)代码>
我需要一个收集子文件夹的函数(如果应用程序在子文件夹中)。例如,如果路径是/dir
,有人调用www.domain.com/dir
,我可以知道它的/dir
,并调用$router->setBasePath(“/dir”)代码>您可以在.htaccess中使用此规则:
RewriteEngine On
RewriteCond $0#%{REQUEST_URI} ^([^#]*)#(.*)\1$
RewriteRule ^.*$ - [E=BASE:%2]
这将把“${ENV:BASE}”设置为该.htaccess所在的任何子目录
然后在PHP中,您可以使用:
$_SERVER["BASE"]
如果.htaccess位于/dir1/
中,则会将其设置为/dir/
,如果dirname是根目录,例如,$thisDirectory='www'
,但在这种情况下,我们不需要->setBasepath()
或者更糟糕的是,它位于/dir/
中,但域映射到/dir/
,在这种情况下,我们也不需要->setBasePath
如果它位于文档根目录中,那么$\u服务器[“BASE”]
将是/
是的,我终于找到了答案,如果我可以,我可以两次找到答案。如果URL是/base/whatever/path
,但如果URL是/base/index.php/whatever/path
。我们如何确保index.php是可选的?@tylersn:你能就此提出一个新问题吗?你能澄清一下吗?例如:W下面是正在执行的脚本?当前文件的基本路径是否足够?正如@anubhava在下面的回答中所说,我想知道调用.htaccess的基本目录