我有点陷入困境,而且很长一段时间以来一直困扰着我。我有一个本地测试服务器,设置如下:127.0.0.1/
我的离线模式网站如下:
127.0.0.1/websitename/index.php
我的网站直播版本如下:
websitename.com/index.php
除了包含页眉和页脚文件外,几乎所有链接都有基本脚本。
页脚和页眉文件中的链接除主页(网站根目录)外都有效。
有没有人可以将我重定向到一个正确的方法来进行离线和在线的多子目录基URL链接?
我对大多数$_SERVER[]
代码和属性以及parse_url()
进行了修改。
答案 0 :(得分:1)
您可以在本地服务器中执行一项简单而酷炫的操作:虚拟主机,它允许您创建子域以访问您的本地网站,而无需在网址中输入子目录。< / p>
示例:
您可以执行以下操作来访问您的文件:
mysite.localhost/
与localhost/mysite/index.php
这样,在将网站转移到在线服务器时,您不必担心子目录。
答案 1 :(得分:1)
我对大多数
$_SERVER[]
标签进行了修改 属性,以及parse_url()
。
不要修补它们。没有干净/自动化的方式去做你正在做的事情。只需在配置文件中手动设置基本路径&amp;再也不用担心它 - 相对路径了。如果您需要设置基本URL,则过程类似。
因此,就文件库路径而言,您应该明确设置$BASE_PATH
,如下所示:
$BASE_PATH = '/full/path/to/your/codebase/here/';
如果您不知道文件系统基本路径是什么,只需将这行代码放在PHP代码中;比如index.php
:
echo "Your path is: " . realpath(dirname(__FILE__)) . "<br />";
然后加载该页面。靠近顶部的地方将是这个文本:
您的路径是:/ full / path / to / your / codebase / here /
然后使用该集,您可以将代码更改为:
然后将include_once
设置为:
include_once $BASE_PATH . 'includes/myfile.php';
有些人可能会说你应该直接使用$_SERVER['DOCUMENT_ROOT']
甚至dirname(__FILE__)
,这意味着你可以通过这种方式简化代码的可移植性。但是为安装设置文件路径的方式可能会有所不同,所以它永远不会正常工作。你在奇怪的服务器怪癖上被抓住的可能性很高。
最好在移动代码时手动在配置文件中设置$BASE_PATH
,而不是处理由$_SERVER
之类的PHP常量引起的令人头疼的问题,这些问题在安装,设置和安装之间不一致。配置。
就基本网址而言,只需按照相同的想法进行本地开发设置:
$BASE_URL = '/websitename/';
这是在您的生产服务器上:
$BASE_URL = '/';
因此,使用$BASE_URL
设置,您就可以执行此操作:
我有几乎所有链接的基本脚本,除了 包括页眉和页脚文件。
现在只需通过带有$BASE_URL
&amp;的网址预先添加您可能需要的任何路径你应该好好去。
答案 2 :(得分:0)
我建议你转移到一个更接近现实系统的开发环境。为此,您可以运行WAMP服务器并将其配置为以mysite.local
之类的域身份为您的网站提供服务,然后只需编辑您的主机文件,以便mysite.local
解析为您的127.0.0.1
。然后,只需在浏览器中输入mysite.local,它就会解析为本地PC,并确保为虚拟主机配置apache并侦听端口80
。
您的主机是windows\system32\drivers\etc
中的本地DNS查找文件。您可能需要在记事本中打开它,该记事本以管理员身份运行,以便能够对其进行编辑。