我是PHP的新手,在尝试使用include链接我的CSS文件时遇到了问题。
基本上我需要将文件链接回某个目录,无论文件有多远。我尝试过使用
<?php
include $_SERVER['DOCUMENT_ROOT'] . '/sysprogs/required/header.html';
?>
但是header.html包含指向我的css文件的链接,所以它最终寻找css文件的目录是
http://localhost/SysProgs/software/CSS/style.css
而不是我希望它去哪里
http://localhost/SysProgs/required/CSS/style.css
我希望这是有道理的,我希望你能帮助我
谢谢你们所有人的帮助!
答案 0 :(得分:7)
我绝对不会使用<base>
。我之前遇到过很多问题。如果您使用<base>
,则所有链接都将相对于该基本值。
相反,我建议为常见目录设置PHP常量。例如:
PHP代码:
<?php
define('CSS_DIR', '/SysProgs/required/CSS/');
?>
HTML代码:
<link href="<?php echo CSS_DIR ?>style.css" rel="stylesheet" type="text/css" />
答案 1 :(得分:3)
使用header.html
中的完整网址。这将是明确和强大的。
<head>
<link href="/FULL_BASE_URL/style/style.css" rel="stylesheet" type="text/css" />
</head>
使用<base>
标头标记。这允许您为链接指定基本URL,包括CSS,并且可能需要在短期内完成最少的工作(请参阅下面的注释)。
<head>
<base href="FULL_BASE_URL" />
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
注意:正如下面的评论中所提到的,base
可能最终会造成比其值得更多的混淆。
答案 2 :(得分:2)
我喜欢在应用程序的中心位置定义绝对路径和webroot:
<?php
define("APP_WEBROOT", "/myapp");
define("APP_ROOTDIR", "/home/www/example.com/htdocs/myapp");
?>
然后你可以像这样“绝对化”正确的链接:
<?php echo APP_WEBROOT; ?>/software/CSS/style.css
我更喜欢这个
超过<base>
,因为该标记会造成混淆并使代码难以长期维护
使用绝对路径/software/CSS/style.css
,因为这些使您无法在您选择的子目录中安装应用程序:您将始终绑定到根目录。
答案 3 :(得分:0)
在设计网站时我经常遇到这个问题。当我有自定义CMS时,我使用以下内容:
$basedir = "root_directory/";
$basedirPHP = $_SERVER['DOCUMENT_ROOT'].$basedir;
$basedirHTML = "http://".$_SERVER['SERVER_NAME'].$basedir;
我定义了$ basedir所以我可以毫不费力地将网站移动到服务器中的不同子目录。 $ basedirPHP和$ basedirHTML是这样我可以用php或者像你提到的那样在链接CSS,JS等时调用文件。
如果您使用wordpress,只需使用好的“bloginfo('template_directory');
在模板文件中执行相同操作。
答案 4 :(得分:-2)
首先要了解的是,你的问题与PHP无关。它就像HTML questuon中的文件名一样简单。如果没有PHP,它将保持不变。只需使用CSS文件的绝对路径
还有另一件事要考虑:考虑接受一些问题。