Создание URL-адресов работает локально и удаленно для разработки

Я хочу бесшовное и портативное решение для локальной/удаленной веб-разработки, которое позволяет использовать абсолютные URL/URI, которые работают локально, когда на моем локальном dev env, а также работают на удаленном сервере без изменений. У меня уже есть MySQL, так как я перенаправил имя хоста на 127.0.0.1 на моем компьютере и использовал то же имя хоста, которое использует удаленный сервер, вместе с тем же пользователем и проходом. Но когда приходит к http, я не могу, конечно, сделать то же самое, потому что тогда я не мог получить доступ к удаленному URL-адресу из браузера, и в свою очередь я бы увидел локальный веб-сервер. Так есть способ? Я использую PHP на apache и несколько различных MVC, Wordpress и т.д., Поэтому, возможно, это делает код не будет очень переносимым между проектами, а также имеет чек-код, который отличает локальный от удаленного, может отрицательно сказаться на производстве производительность сервера.

edit: Хорошо, я знаю, как это сделать на PHP, я бы предпочел сделать некоторую настройку в своей локальной среде, поэтому удаленному серверу не нужно делать дополнительную обработку для этого. Кроме того, есть файлы, которые не проходят предварительную обработку PHP, как.js файлы, которые тоже нужны.

2 ответа

Вы можете использовать $_SERVER['HTTP_HOST'] чтобы получить имя хоста (или IP-адрес), которое было использовано для доступа к странице. Таким образом, вы можете сделать все свои абсолютные URL-адреса

$url = "http://{$_SERVER['HTTP_HOST']}/path/to/file";

Вместо

$url = "http://localhost/path/to/file";

Это значение будет взято из заголовка Host: HTTP-запроса, поэтому он будет также учитывать нестандартные порты.


У вас может быть что-то вроде этого (как вы его включаете, это зависит от вас):

if($_SERVER['SERVER_NAME'] == "localhost"){
 $baseurl = "http://localhost/";
}else{
 $baseurl = "http://livesite.com/";
}

а затем, когда вы хотите добавить ссылку:

<a href="<?php echo $baseurl; ?>index.html" target="_blank">Home</a>

licensed under cc by-sa 3.0 with attribution.