Путь к виртуальному каталогу в файлах 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
Если вы уточните свой ответ (эти серверы явно не содержат одинаковые данные одинаково), я мог бы дать более точное описание. Однако, если бы мне пришлось угадывать, я бы сказал, что вы, вероятно, столкнулись с проблемой, которую я описал.
Удачи!
Эндрю