This is how my project is currently set up:
-index.php
-css
--index.css
-includes
--head.php
head.php
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="../css/index.css">
<title> My Website </title>
</head>
<body>
index.php
<?php
include(__DIR__.'/includes/head.php');
?>
The problem is that index.css does not work. I don't see what I'm doing wrong at this point. Any help would be greatly appreciated. Thanks.
The problem is in the way PHP include()
works; it literally includes the code from head.php
into index.php
, without updating any relative links. As such, you index.php
is looking for the CSS file in ../css/index.css
. And while your head.php
does indeed need to go up one directory before looking in the CSS folder, your index.php
file does not.
To resolve this, you have a number of options:
css/index.css
to work from your index.php
file./css/index.css
to reference the CSS file from any folder.https://yourwebsite.com/css/index.css
to reference the CSS file from not only your website, but any other website. This further eliminates confusion, but will cause issues if you change the domain.Personally I would recommend the root-relative path, as it makes things less confusing when using things like includes and partials.