首先,如果你读到这篇文章,请提前感谢你的耐心, - 我是一个相当新的PHP,并且有一个问题,我将尝试解释/描述。
//set default path
///var/www/vhosts/www.mydomain.com/httpdocs/
$url = 'http://mydomain.com/skins/coolblue/tmp';
$url2 = 'http://mydomain.com/skins/coolblue/tmp';
$doc = $_SERVER['DOCUMENT_ROOT'];
$path = '/templates/';
$actual_url = $doc.'/skins/coolblue/tmp'.$path;
(我有一个开发人员最初构建我的网站并配置我的服务器,但他现在已经离开了)
我的网站托管在一个带有plesk控制面板的专用服务器上,所以当我打电话给Godaddy并告诉他们['DOCUMENT_ROOT']
的值时,他们给了我 * /var/www/vhosts/www.mydomain.com/的httpdocs / *
我的问题是,我使用动态网址,例如subdomain.mydomain.com(已经配置并正常工作),这反过来确定内容,并且输出来自使用$_SERVER['DOCUMENT_ROOT']
的特定脚本如上所述,url始终是www。+++格式的静态URL。我希望网址是动态的。
有没有办法解决这个问题,或者我可以将$ doc = $_SERVER['DOCUMENT_ROOT'];
更改为脚本的实际网址并添加动态域变量即http://$subdomain/domain.com
吗?我已经尝试了几乎没有运气的路径的每一个变化。你有什么建议吗?顺便说一句,$doc = $_SERVER['DOCUMENT_ROOT'];
是必要的,还是开发人员的选择而不是写出路径? - 再次谢谢你
答案 0 :(得分:1)
如果您正在使用.htaccess文件将子域转发到子文件夹(这是纯粹的猜想),并且实际上有必要使用文件系统路径,您可以在重定向上设置环境变量以利用,例如:
RewriteCond %{HTTP_HOST} subdomain\.site\.tld$ [NC]
RewriteRule ^(.*)$ /subfolder/$1 [L,E=APPEND_ROOT:subfolder/]
然后一个简单的修改应该给你正确的路径:
$doc = $_SERVER['DOCUMENT_ROOT'] . $_ENV['REDIRECT_APPEND_ROOT'];
如果您不想为每个站点配置完整路径名,那么 $_SERVER['DOCUMENT_ROOT'];
是必要的(这有点痛苦)。
如果您没有使用.htaccess来解析您的子域,并且您已在Apache配置中设置它们,那么它应该指向每个子域的正确物理主页。
答案 1 :(得分:1)
$_SERVER['DOCUMENT_ROOT']
是路径。尝试使用'SERVER_NAME'
或'REQUEST_URI'
'SERVER_NAME'
执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,则这将是为该虚拟主机定义的值。
或
'REQUEST_URI'
为了访问此页面而给出的URI;例如,'/ index.html'。