Путь к виртуальному каталогу в файлах HTML

Я пытался создать сервер разработки, копируя веб-сайт с одного хоста на другой, но серверы по-разному обрабатывают виртуальные пути.

На главном сервере это работает:

<link href="/styles/styles.css" rel="stylesheet" type="text/css">

На сервере dev такой же путь должен быть записан как (без первой косой черты):

<link href="styles/styles.css" rel="stylesheet" type="text/css">

Как сделать так, чтобы сервер dev работал с файлами основных серверов, не переписывая пути? Это то, что я могу сделать из.htaccess с переписать мод?

1 ответ

Решение

Сначала немного информации о том, как работают пути. Абсолютные пути основаны на корне сервера. Относительные пути основаны на URL (а не на пути к файлу) текущей страницы. Однако это поведение НЕ обрабатывается сервером - оно обрабатывается клиентом, и это поведение универсально (да, даже IE6... я знаю, удивление!). Единственное, что может привести к тому, что эти два пути НЕ будут одинаковыми, будет, если они не относятся к корню веб-сайта.

Например, если мы пытаемся получить доступ к URL, который вы упомянули выше (/styles/styles.css), вот как они будут себя вести в следующих двух примерах:

Веб-сайт "Главный сервер", размещенный по адресу http://mainwebsite/index.html

styles/styles.css  => http://mainwebsite/styles/styles.css
/styles/styles.css => http://mainwebsite/styles/styles.css

Веб-сайт "Dev Server", размещенный по адресу http://devsite/some_sub_dir/index.html

styles/styles.css  => http://devsite/some_sub_dir/styles/styles.css
/styles/styles.css => http://devsite/styles/styles.css

Если вы уточните свой ответ (эти серверы явно не содержат одинаковые данные одинаково), я мог бы дать более точное описание. Однако, если бы мне пришлось угадывать, я бы сказал, что вы, вероятно, столкнулись с проблемой, которую я описал.

Удачи!

Эндрю

Другие вопросы по тегам