php локальные машинные пути - PullRequest
0 голосов
/ 12 мая 2011

Я загрузил полный веб-сайт, который будет обновляться для клиента.
Я заметил, что код не может найти файлы (CSS, JS, изображения и т. Д.). Пути кодируются так: & mdash; с косой чертой в начале /. Удаление этих / из начала каждого href, src или любого другого
решает проблему на локальной машине, но, конечно, все портит онлайн.

это не будет работать локально:

href="/design/layout.css"

это будет (первый слеш удален)

href="design/layout.css"

В чем причина этой разницы? существует ли какая-либо системная переменная, которую необходимо настроить, чтобы оба сервера обрабатывали пути одинаково?

1 Ответ

3 голосов
/ 12 мая 2011

Если в начале относительного URL-адреса есть /, то он разрешается как абсолютный путь к веб-корню домена.

Пример абсолютного пути (с / в начале):

в файле на domain.com/test/other/path/test.html
href="/design/layout.css" -> браузер выполняет поиск в domain.com/design/layout.css

в файле на домене / test.html
href="/design/layout.css" -> браузер выполняет поиск в domain.com/design/layout.css

Вывод абсолютныйpaths
Браузер выполняет поиск в одном и том же месте оба раза.

Пример относительного пути (без / в начале):

в файле на домене.com / test / other / path / test.html
href="design/layout.css" -> браузер выполняет поиск в domain.com/test/other/path/design/layout.css

в файле на домене / test.html
href="design/layout.css" -> browserпоиск в domain.com/design/layout.css

Вывод относительного пути
Поиск в браузере в разных местах.


Решение

Вы можете добавить Apache Alias ​​ в ваш файл .htaccess или .conf, что заставит сервер выводить содержимое второго пути при запросе первого пути.В вашем случае Apache выводит CSS-файлы по новому пути вместо /design/.

Пример Apache Alias ​​

Alias /design /your/new/path/design
...