我是PHP新手,因此我在OSX上使用XAMPP。我试图在生产和开发中提供相同的<a href="....">
。
我继承了一个所有单级目录的网站(我知道,但不值得更改过多的代码)。现在我正在尝试制作一个设计合理的网站。
所以,如果我有一个导航栏,请使用以下代码:
<li><a href="../services.php">Services</a></li>
<li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Equipment<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="../equipment/equip1.php">Refrigerated Machines</a></li>
我使用../
来访问文档根目录,然后设置绝对路径。在生产版本上它工作正常。但是在开发版本上,它将进入XAMPP的更高目录。如何设置服务器相对于站点的服务器根目录?
我的文件夹系统如下
htdocs # where ../ is going in development
sites
site1 # ../ should go here in this site's folder, not any other site's folder
site2 # ../ should go here in this site's folder, not site1
xampp
您如何考虑多个网站?如果我强制将文档根目录移到site1
,那么site2将如何正常运行?
答案 0 :(得分:1)
使用base html代码...
可以省去很多麻烦我通常做的是在我的引导程序文件中添加这样的内容:
define('BASE_URL', 'http://localhost/site1'); // for development
// define('BASE_URL', 'http://somesite.com'); // for production
这是两个单独的文件。
然后你会进入<head>
标签:
<base href="<?php echo BASE_URL ?>"/>
现在,您网页中的所有相关链接都与<base>
标记上声明的路径相关。
conf
目录中:
- mysite
--- conf
----- bootstrap.php
--- assets
----- js
----- css
--- src
--- test
-- index.php
我的bootstrap.php
文件总是定义我的应用程序根目录:
define('APP_ROOT', dirname(__DIR__)); // since it's inside /conf/ dir.
这可能会解决PHP中相关目录的问题。
然后,在我的index.php
,我的根,我在第一行有这个:
require 'conf/bootstrap.php';
我使用单个入口点(index.php
文件),所以我只需要执行一次。如果您有多个顶级页面,则必须在每个页面中包含此页面。
如果您将生产引导程序保留在服务器中,并将开发版本保留在localhost上,则可以忘记它。
答案 1 :(得分:0)
您应该在apache中设置虚拟目录,或者您可以在模板的head部分添加html标记“base”以设置所有URL的基础。见http://www.w3schools.com/tags/tag_base.asp
实际上如果使用php生成模板,可以在php中生成绝对URL。
答案 2 :(得分:0)
我建议使用HTML的base
element:
此属性指定绝对URI,该URI充当解析相对URI的基URI。
您现在可以在应用程序中使用相对URI,并且只需在移植到其他站点时(动态)更改href
上的<base>
属性。