您可以使用$_SERVER['DOCUMENT_ROOT'] 从每个站点内访问root。 仅用于测试,您可以回显路径以确保其正常工作,如果您以正确的方式进行操作。您永远不想显示诸如 includes 和 @ 之类的本地服务器路径987654323@
网站 1
echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/';
包含在第一个站点下:
echo $_SERVER['DOCUMENT_ROOT'].'/includes/'; // should be '/main_web_folder/includes/';
站点 2
echo $_SERVER['DOCUMENT_ROOT']; //should be '/main_web_folder/blog/';
要访问的实际代码包括从 site1 到 site2 你会说:
include($_SERVER['DOCUMENT_ROOT'].'/../includes/file_from_site_1.php');
如果您尝试通过排除document root 和root 斜杠来访问它,它只会使用执行查询的文件的相对path:
//(not as fool-proof or non-platform specific)
include('../includes/file_from_site_1.php');
包含的路径在任何地方的网站前端(实时)的代码中都没有位置,并且应该保护并仅在生产环境中使用。
此外,对于网站本身的 URL,您可以使它们相对于域。浏览器会自动填写其余部分,因为他们知道他们正在查看哪个页面。所以而不是:
<a href='http://www.__domain__name__here__.com/contact/'>Contact</a>
你应该使用:
<a href='/contact/'>Contact</a>
为了获得良好的 SEO,您需要确保该博客的 URL 不存在于其他域中,否则它可能会被标记为重复站点。话虽如此,您可能还想在您的robots.txt 文件中添加一行ONLY site1:
User-agent: *
Disallow: /blog/
其他可能性:
Look up your IP address 并包含此 sn-p 代码:
function is_dev(){
//use the external IP from Google.
//If you're hosting locally it's 127.0.01 unless you've changed it.
$ip_address='xxx.xxx.xxx.xxx';
if ($_SERVER['REMOTE_ADDR']==$ip_address){
return true;
} else {
return false;
}
}
if(is_dev()){
echo $_SERVER['DOCUMENT_ROOT'];
}
请记住,如果您的 ISP 更改了您的 IP,因为您有一个 DCHP 动态 IP,您需要更改该文件中的 IP 以查看结果。我会将那个文件放在一个包含中,然后在页面上要求它进行调试。
如果您对使用浏览器console log 等现代方法没问题,您可以改为这样做并在浏览器的调试界面中查看:
if(is_dev()){
echo "<script>".PHP_EOL;
echo "console.log('".$_SERVER['DOCUMENT_ROOT']."');".PHP_EOL;
echo "</script>".PHP_EOL;
}