我写了一个小功能来建立当前的网站URL协议,但我没有SSL,也不知道如何测试它是否在https下工作.你能告诉我这是否正确吗?
function siteURL()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'].'/';
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Run Code Online (Sandbox Code Playgroud)
是否有必要像上面那样做,或者我可以这样做吗?:
function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Run Code Online (Sandbox Code Playgroud)
在SSL下,即使锚标记网址使用http,服务器也不会自动将网址转换为https?是否有必要检查协议?
谢谢!
如果是的话Path_To_DocumentRoot/a/b/c.php,应该永远/a/b.
我用这个:
dirname($_SERVER["PHP_SELF"])
Run Code Online (Sandbox Code Playgroud)
但是当它被另一个目录中的另一个文件包含时,它将无法工作.
编辑
我需要一个相对路径来记录root.它在web应用程序中使用.
我发现还有另一个问题存在同样的问题,但尚未接受答案.
对你来说可能是一个简单的问题,但我对这个问题感到很头疼。
我有一个 php 文件,它需要知道它的当前目录 url 才能链接到与其自身相关的内容。
例如,目前我知道获取当前目录路径而不是 url。当我使用它时,我得到了路径:
realpath(__DIR__)
Run Code Online (Sandbox Code Playgroud)
结果:
/Applications/MAMP/htdocs/mysite/dir1/dir2/dir3
Run Code Online (Sandbox Code Playgroud)
但这将是我想要的结果:
http://localhost:8888/dir1/dir2/dir3
Run Code Online (Sandbox Code Playgroud)
请注意,这不是当前页面的位置。该页面从“ http://localhost:8888/dir1/dir2/dir3/myfile.php ”调用文件,“ myfile.php”具有上面的脚本。
-- 编辑以详细说明更多细节 -- 感谢您的回答。但我知道我需要添加更多细节。