Некоторое время у меня была эта проблема, и я безуспешно искал ответы на все вопросы.
<img src="/images/test.jpg" /> 
Получает изображение из (корневой путь – в моем случае при производстве в LAMP)
  htdocs/images/test.jpg 
Вызывается ли это из htdocs / index.php или htdocs / foo / bar / index.php
Я использую XAMPP в разработке, а внутри htdocs есть папки с проектами, поэтому описанный выше метод будет работать, когда live требует от меня изменить его:
 <img src="/projectName/images/test.jpg" /> 
при работе на местном уровне.
Чтобы упростить эту задачу, я определяю константу BASE, которая в разработке я использую:
 define('BASE','/projectname/) 
И затем, когда я буду жить, я перехожу к:
 define('BASE','/') <img src="<?php echo BASE;?>images/test.jpg" /> 
Это, очевидно, очень раздражает и в конечном итоге вызывает несколько проблем. Пожалуйста, может кто-то пролить свет на эту ситуацию, что я специально хочу сделать, это использовать корневой путь в моих источниках изображения / сценария, но для:
 <img src="/images/test.jpg" /> 
при вызове из htdocs / projectName / foo / test.php
искать изображение в:
 htdocs/projectName/images/ 
Это возможно?
Альтернативный способ справиться с этим – с использованием виртуальных хостов.
  Виртуальный хост действует как вторая версия localhost, которая работает специально для подпапки.  Например, вы можете настроить Apache так, чтобы при посещении http://example (нет .com или чего-то еще) он показывает вам контент из http://localhost/example/ .  Все CSS и JavaScript и ссылки будут действовать так, как если бы они работали из корневой папки веб-сайта, поскольку папка с ведущим example была удалена из URL-адреса. 
Я не могу найти пошаговое руководство, которое я использовал для XAMPP, но здесь аналогичный, который охватывает все основные моменты. Он был написан для Windows, но я полагаю, что существуют аналогичные механизмы, которые вы можете использовать для LAMP:
Подведем итог, вот что говорит вам статья:
example вы отправили 127.0.0.1 127.0.0.1 (но, например, имя веб-сайта), он показывает содержимое из папки example . Так ваш производственный сайт (который является единственным сервером с несколькими веб-сайтами) имеет разные «корни» для каждого веб-сайта.
Вы когда-нибудь думали о базовом теге в заголовке вашего html-контента? http://www.w3schools.com/tags/tag_base.asp
 <head> ... <base href="<$path />"> ... </head> 
получить базовый путь:
 $path = $_SERVER['SERVER_NAME'] == 'production.host' ? '/' : 'projectName'; 
Я думаю, что лучший способ сделать это – с помощью baseurl, установить ваш baseurl в своей конфигурации и использовать его для внешних файлов.
 $config = new Config(); public $baseurl = "http://dev050.nl"; 
Вы можете использовать его тогда как
 $config->baseurl; 
И, может быть, это для вас что-то интересное: http://twig.sensiolabs.org/
надеюсь, что это помогло.
Я делаю аналогичную вещь для переключения баз данных между моим сервером dev и сервером хостинга, если он вам пригодится. Нет причин, по которым он не должен работать для базового URL-адреса.
 // db connect if($_SERVER['SERVER_NAME'] != "dev.mydomain.org"){ try{ $pdo = new PDO('mysql:host=mysql.***.net;dbname=***;charset=utf8', '***', '***'); }catch(PDOException $ex){ header('Location: error_db.php'); } }else{ try{ $pdo = new PDO('mysql:host=localhost;dbname=***;charset=utf8', '***', '***'); }catch(PDOException $ex){ header('Location: error_db.php'); } } 
Вы можете либо попробовать решение, предоставленное другими в этом потоке (которые являются программными решениями), либо как альтернатива, я делаю что-то другое (решение для установки).
Для меня мне нравится создавать независимую среду, в которой мои проекты и файлы разработки отдельно от XAMPP (я использую XAMPP, но этот принцип применим к другим средам хостинга). Это позволяет мне легко устанавливать новые обновления для XAMPP, когда они становятся доступными, не беспокоясь о моих проектах, а также мне нравится иметь все мои проекты в одной папке, посвященной разработке. Эта папка разработки будет содержать проекты для веб-приложений, мобильных и других сред.
  Способ, которым я настроил это, есть у меня папка c:\dev\ , которая будет содержать список моих проектов, каждый проект будет сам по себе.  Так, например, c:\dev\project1\ , c:\dev\project2\ и т. Д. 
  Теперь, после создания этих папок для разработки, я httpd-vhosts.conf файл httpd-vhosts.conf (расположенный в c:\xampp\apache\conf\extra\ ) и файл hosts (расположенный в c:\Windows\System32\drivers\etc\ ) имеют правильные ссылки. 
  Предположим, что один из моих проектов называется project1 .  и он обычно находится в c:\xampp\htdocs\project1 тогда я обычно получаю доступ к нему через браузер, поскольку http://localhost/project1 
  Однако, чтобы иметь независимую среду и, как объяснялось ранее, я создал бы папку разработки в диске c:\dev , тогда я бы переместил в нее project1 и закончил с c:\dev\project1 
  Затем, чтобы получить доступ к этому проекту, набрав файл httpd-vhosts.conf в веб-браузере, я httpd-vhosts.conf файл httpd-vhosts.conf расположенный в c:\xampp\apache\conf\extra\ следующим образом: 
 <VirtualHost project1.dev:80> ServerAdmin admin@project1.dev DocumentRoot "C:/dev/project1" ServerName project1.dev ServerAlias www.project1.dev ErrorLog "logs/project1.dev.error.log" CustomLog "logs/project1.dev.access.log" combined <Directory "C:/dev/project1"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> 
  Кроме того, я должен обновить файл hosts (расположенный в c:\Windows\System32\drivers\etc\ и добавить следующую запись: 
 127.0.0.1 project1.dev 127.0.0.1 www.project1.dev 
  (где 127.0.0.1 совпадает с вашим локальным хостом . Также обратите внимание, что вам нужно добавить вторую запись в файл hosts для псевдонима www ). 
  Это позволяет мне получить доступ к моему проекту как: http://project1.dev 
Как только это будет установлено, я могу теперь последовательно писать свой код для моей среды разработки и производства, а мои ссылки на root будут работать нормально.
  Кроме того, с этой настройкой мне все равно, нужно ли мне обновлять XAMPP или переключаться на LAMP или что-то еще, все, о чем я забочусь, это убедиться, что я позабочусь только об одном файле, который является моим установочным файлом httpd-vhosts.conf ,  И, как я уже упоминал, я всегда предпочитаю иметь отдельную папку для разработки, и у меня могут быть разные типы проектов в среде разработки, например, мобильные проекты, веб-проекты и т. Д. 
Надеюсь это поможет.
Если вы хотите настроить многоузловую (настройку субдомена), то после того, как вы включите WordPress для нескольких пользователей в соответствии с инструкциями WordPress, вам необходимо сделать следующее:
Предполагая, что для многопользовательской структуры требуется следующая структура:
 project1.dev www.project1.dev (this is an alias to project1.dev) sub.project1.dev (this is another setup, subdomain) 
  Затем вам нужно добавить следующую запись в httpd-vhosts.conf 
 <VirtualHost sub.project1.dev:80> ServerAdmin admin@project1.dev DocumentRoot "C:/dev/project1" ServerName sub.project1.dev ErrorLog "logs/sub.project1.dev.error.log" CustomLog "logs/sub.project1.dev.access.log" combined <Directory "C:/dev/project1"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> 
  И обновите файл hosts чтобы включить 
 127.0.0.1 www.project1.dev 
  Обратите внимание, что DocumentRoot указывает на тот же каталог как для основного сайта, так и для сайта субдомена. 
Повторите процесс для каждого нового субдомена, который вы добавляете в свою сеть WordPress.
Возможным решением может быть использование mod_rewrite для автоматического изменения пути на вашем сервере разработки
 RewriteCond %{HTTP_REFERER} ^https?://localhost/testsite/ RewriteCond %{REQUEST_URI} \.(jpg|gif|png|bmp)$ RewriteRule ^ /testsite/$1 
Я считаю, что приведенное выше правило mod_rewrite верное, но было бы лучше проверить это самостоятельно.