Cum setez path-ul cu XAMPP?

Salutare,

Structura proiectului este urmatoarea:

- ROOT
  -- application
    -- views
      -- _includes
        _header.php

  -- public
    -- assets
      -- css
        main.css

Intrebare: Cum ar trebui sa arate calea catre fisierul main.css daca vreau sa o definesc din interiorul fisierului _header.php?


Am incercat:

<link rel="stylesheet" href="../public/assets/css/reset.css"/> => Resource interpreted as Stylesheet but transferred with MIME type text/html

Multumesc anticipat!

<link rel="stylesheet" href="/assets/css/reset.css"/> ar trebui sa functioneze.

Nu merge. Omite doua directoare, adica in loc de ROOT/public/assets/css/main.css incearca sa acceseze /assets/css/main.css.

Varianta pe care am scris-o eu se duce la adresa corecta a fisierului, dar nu stiu cum sa rezolv eroarea:

The stylesheet http://localhost:81/ROOT/public/assets/css/reset.css was not loaded because its MIME type, "text/html", is not "text/css".

Daca esti in directorul _includes, atunci un ../ te duce in views. Inca un ../ duce in application. Inca un ../ te duce in ROOT. De aici o iei in sus.

Deci teoretic :

../../../public/assets/css/main.css

Dar asta depinde daca ai un .htaccess pe undeva.

Sau poti folosi

/ROOT/public/assets/css/main.css

2 Likes

Sigur nu este ./ROOT/public/assets/css/main.css? (cu punct in fata).

But again, depinde de structura fisierelor. Acel root poate fi root-ul de la cu totul altceva… Si depinde si acel header unde este folosit.

Spre exemplu, daca il iei cu include(), poate sa aiba rezultat diferit fata de daca il iei cu file_get_contents().

http://stackoverflow.com/a/21828923 si http://stackoverflow.com/a/7591336

/ inseamna - pornind din web root.
./ inseamna - pornind din directorul curent.

Cred ca el vrea varianta 1.

Eu stiam ca este invers… spre exemplu, intr-un .html, daca ai <img src="/a.png"> iti ia din din acelasi folder, dar un <img scr="./a.png"> iti ia din web_root. Cel putin eu asa stiu ca functioneaza… si in linux, daca pui ./file.ext,iti ia din root, daca nu ma insel… in timp ce /file.ext iti ia din directorul curent.

Nope, e exact invers.

/a/b/c/d/e.extensie referenteaza fisierul respectiv pornind din root, indiferent ca e in root-ul disk-ului, sau in root-ul web (in functie de permisii, chroot, etc)

My whole life is a lie…

Multumesc pentur corectare!

Nu-i pb, pentru putin.

1 Like

A doua varianta indica locatia corecta, dar din nou:

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://localhost:81/ROOT/public/assets/css/main.css"

Hmm.

Daca deschizi fisierul asta http://localhost:81/ROOT/public/assets/css/main.css iti apare corect CSS-ul din el? Sau cumva e o pagina 404 (page not found)?

Nu imi apare nimic, pentru ca .htaccess-ul imi transforma link-ul in http://localhost:81/ROOT/public/assets/css/main.css. Pun si codul din .htaccess, poate ajuta cu ceva:

Options -Multiviews

RewriteEngine On

RewriteBase /ROOT/public

RewriteCond %{REQUEST_FILENAME}% !-d
RewriteCond %{REQUEST_FILENAME}% !-f
RewriteCond %{REQUEST_FILENAME}% !-l

RewriteRule ^(.+)$ index.php?rt=$1 [QSA,L]

RewriteBase /ROOT/public chestia asta iti face ca web root-ul tau sa fie ce scrie acolo. Deci nu mai este /ROOT.

Probabil ca o sa-ti mearga cu RewriteBase / (si sa accesezi direct fisierul css, o sa mearga) dar inteleg ce vrei tu sa faci acolo, din pacate nu pot testa acum. Depinde si unde ai .htaccess-ul, in / sau in /ROOT ? Si index.php unde este? Pentru ca RewriteBase /ROOT/public se asteapta sa fie acolo, in public, si presimt ca e in /ROOT.

De fapt am doua .htaccess, unul in directorul public(pe care ti l-am aratat cu un post anterior) si altul in directorul app care nu contine decat Options -Indexes sa nu poata fi accesat prin URL. Fisierul index.php este in directorul public.