2011-12-12 66 views
0

我想要一個用於本地/遠程Web開發的無縫和可移植的解決方案,它允許我在本地開發環境中使用在本地工作的絕對URL/URI,並且還可以在遠程服務器上工作未經修改。
我已經有MySQL以這種方式工作了,因爲我在我的機器上將主機名重定向到127.0.0.1,並且使用與遠程服務器使用的主機名相同的主機名以及相同的用戶和通行證。
但是當談到http時,我當然不能這樣做,因爲那時我無法從瀏覽器訪問遠程URL,並且我將看到本地Web服務器。
那麼有什麼辦法嗎?
我在apache上使用PHP,以及幾個不同的MVC,Wordpress等,所以也許這樣做的代碼不會在項目之間移植得很輕鬆,並且在代碼中檢查區分本地和遠程的代碼,可能會影響負面生產服務器的性能。使URL在本地和遠程開發工作

編輯:好吧,我知道如何在PHP中做到這一點,我寧願在我的本地環境做一些配置,所以遠程服務器不必爲此做額外的處理。
此外,有些文件不經過PHP預處理,例如.js文件,也需要這些文件。

+0

我覺得改變主機文件和創建虛擬主機在您的Web服務器提供了最完整的模擬。 – goat

回答

1

你可以有這樣的事情(怎麼你包括由你):

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

,然後當你想添加一個鏈接:

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

是的,但這會影響活動服務器的性能,而且我有不通過PHP解釋器的文件,比如純的.js文件 – Petruza

2

您可以使用$_SERVER['HTTP_HOST']來獲取用於訪問該頁面的主機名(或IP地址)。所以,你可以讓你的所有絕對URL代替

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

此值會從HTTP請求的Host:頭採取

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

,所以它也將佔到非標準端口。

相關問題