我一直在寻找我正在努力解决的问题的答案,但似乎无法找到明确的解决方案。
我正在使用WAMP服务器。当我创建一个新网站时,我在WAMP根目录中创建了一个子目录:C:\wamp\www
,例如C:\wamp\www\somesite.com.au
。对于每个网站构建,我总是有一个includes
目录:C:\wamp\www\somesite.com.au\includes
,其中包含每个网站页面所需的所有全局代码段,例如包含HTML头内容的include:
<meta charset="utf-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS -->
<link rel="stylesheet" href="css/sitename.css">
<!--[if lte IE 9]><link rel="stylesheet" href="css/ie.css"><![endif]-->
<!-- All JavaScript at the bottom, except for... -->
<!--[if lt IE 9]><script src="js/libs/html5.js"></script><![endif]-->
<script src="js/libs/respond.js"></script>
问题是当我从子目录中的页面调用包含文件时,例如使用PHP的C:\wamp\www\somesite.com.au\profile\foo.php
包括:<?php include("../includes/template/html-head.php"); ?>
其中包含资产的任何路径,包括:找不到<link rel="stylesheet" href="css/style.css">
,因为路径相对于includes
目录。
有没有办法使用PHP或.htaccess使我的includes
目录中的资产的任何相对路径始终解析,无论我从哪里调用包含文件?我不想在上传到制作时修改任何代码,也不想使用HTML <base>
元素。
请注意:我是一名前端开发人员,因此我的PHP / .htaccess技能非常基础。
干杯
答案 0 :(得分:0)
使用这两项你可以随时知道你在哪里
$currentScriptDir = dirname(__FILE__);
注意:如果你在PHP 5.3&gt; =下面有一个__DIR__
,它直接就是脚本所在的目录
答案 1 :(得分:0)
您应该通过绝对链接到页面中的每个资源:
<link rel="stylesheet" href="localhost/yourfolder/css/style.css">
当然,您应该为要放入页面的每个图像执行此操作。只需先定义一个ABSPATH
常量,然后在应用程序周围使用它。但是如果你的图像是在样式表文件中定义的,你不需要将它们定义为绝对的,只需定义我在这里提到的样式表文件的绝对路径。
<强> ABSPATH:强>
通常,具有用户友好URL的Web应用程序应使用绝对路径指向其数据。例如,我习惯制作一个.htaccess
文件,并将每次调用返回到我的第一页,即index.php,然后我将获得REQUEST_URI
并将路径分成碎片并确定哪个部分我应该向我的用户展示。这是ABSPATH
的想法,我在我的核心类的构造方法中定义它。可以通过工作项目中的每个脚本访问它。我认为这是将数据传输到您页面的唯一方法。
答案 2 :(得分:0)
这是我最终要做的工作:
在根目录中创建了一个config.php
文件,并在每个页面的顶部链接到该文件:
以下是我的config.php
文件的内容:
<?php
/* Absolute paths to the site root */
define( 'ABSPATH', dirname(__FILE__) . '/' );
$path = '/Sitenamehere';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
我上传到生产服务器时必须更新$path
值。我宁愿不这样做,但不确定如何保持它的普及性?
然后,对于我的包含文件中的资产的任何链接,我链接到它们:
HREF = “/ CSS / style.css中” &gt;“中
一切正常,但不确定我是如何设置的最好方法?还有哪个更好用于调用我的包括:
<?php include (ABSPATH . "/includes/global/html-element.php"); ?>
或
<?php include "includes/global/html-element.php" ?>
主要围绕页面表现。
干杯