0

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.

1
  • Note that, href is relative to the current browser url path, while the php's include is relative to the server path. Commented May 6, 2018 at 22:36

1 Answer 1

3

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:

  • You can update the relative path to css/index.css to work from your index.php file.
  • You can use the root-relative path /css/index.css to reference the CSS file from any folder.
  • You can use the absolute path 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.

Sign up to request clarification or add additional context in comments.

2 Comments

The root-relative path did not work but the relative path did. Thanks!!
Root-relative links depend on what is considered to be the root of your website. Usually it's the core website itself, though it can be modified through the <base> tag. I'm glad that at least the relative path worked for you though :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.