Dlaczego programista miałby umieszczać ukośnik na początku każdej ścieżki względnej?

Badam trochę kodu dla przyjaciela i odkryłem, że deweloper, który zbudował swoją stronę, zaczął każdego krewnego src, href, i include z ukośnikiem do przodu /.

Na przykład:

src="/assets/js/jquery.js"
Nigdy wcześniej tego nie widziałem. Więc moje pytanie brzmi, dlaczego programista miałby umieszczać ukośnik / na początku ścieżki względnej?
Author: stefmikhail, 2011-09-30

3 answers

Robi się to w celu wykorzenienia ścieżki (czyniąc ją ścieżką absolutną).

Zapewnia, że ścieżka nie jest względna, ale odczytywana z katalogu głównego serwisu.

Pozwala to przenosić plik i nie trzeba zmieniać linków do różnych zasobów.

Używając Twojego przykładu:

src="/assets/js/jquery.js"

Jeśli plik odniesienia znajduje się w /pages/admin/main.html (na przykład) używając ścieżek względnych, użyjesz:

src="../../assets/js/jquery.js"

Załóżmy, że przenosisz plik do katalogu podrzędnego. Nie będą potrzebne żadne zmiany ponieważ z oryginalną ścieżką rooted, ale względną trzeba by zmienić na:

src="../../../assets/js/jquery.js"
 66
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 16:30:14

Dodanie odpowiedzi @Oded, ukośnik sprawia, że URL jest absolutny.

Na przykład:

/foo/bar/baz.css

To tłumaczy się na:

http://www.example.com/foo/bar/baz.css

Ale bez Slasha, rzeczy stają się nieco inne:

foo/bar/baz.css

To polecenie mówi przeglądarce, aby poszukała w bieżącego folderu (Nie katalogu głównego) katalogu foo, a następnie kolejnych katalogów i Pliku.


Weźmy na przykład ten HTML:

<script type="text/javascript" src="foo.js"></script>

Jeśli przeniesiesz plik HTML do w innym folderze skrypt nie zostanie załadowany, ponieważ foo.js nie jest przenoszony wraz z plikiem HTML.

Ale jeśli używasz bezwzględnego adresu URL:

<script type="text/javascript" src="/foo.js"></script>

Następnie plik JS jest ładowany dokładnie z http://www.example.com/foo.js bez względu na to, gdzie znajduje się plik HTML.

 27
Author: Blender,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:44

Ma to na celu zapewnienie, że zasób pochodzi z "głównego" serwera www.

Np. Host jest www.example.com URL staje się www.example.com/assets/js/jquery.js

Robię to z projektem, który chcę zapewnić NA ŻYWO na własnym wirtualnym hoście.

Problem naprawdę sprowadza się do tego, gdzie te aktywa są włączone. Na przykład, jeśli zasób jest dołączany z /help/pages/faq, programista może być pewien, że ścieżka będzie działać poprawnie, gdy witryna jest hostowana na nie zmieniającym się hoście, np. example.com.

Problem użycia ścieżek względnych, ' assets / js/jquery.js ' oznacza, że jeśli zasoby są zawarte Z /help/pages /faqs, to ścieżka staje się względem tego punktu początkowego, np./help/pages/faqs/assets/js / jquery.js

Hope that helps

 7
Author: Si Griffiths,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-30 16:29:00