[英]A way to get relative paths to work using subdomains?
通過子域訪問頁面時,所有包含和相對路徑都會中斷(即使服務器上的目錄結構應允許相對路徑找到它)。 使多個子域上的文件訪問中央資源(不使用絕對路徑)的最佳方法是什么?
一個JavaScript示例:
m_url : '../code/php/UserAPI.php',
$.ajax({
url: someClass.m_url,
dataType: "json",
data: paras,
success: function(ret){someClass.onLoggedIn(ret, callback)}
});
如果從subdomain1.example.com
和subdomain2.example.com
調用了此UserAPI,但是php駐留在example.com
那么如何使相對路徑遵循linux目錄結構,而不是嘗試合並子域/域路徑呢?
PS。 無法對m_url進行硬編碼的原因是,該代碼必須在開發服務器和生產服務器上均可工作。
一如既往的感謝!
您可以使用$_SERVER['PATH_TRANSLATED']
根據文件系統確定當前位置,然后相對於該位置進行定位。 但是,這需要對Apache設置進行一些調整 。
可能的替代解決方案是通過$ _SERVER感測您所在的主機(Dev,Prod等),並根據需要定義這些路徑。 然后,只需在定義路徑之前設置前綴即可。 當然,它需要一些額外的代碼行,但可以將大腦損傷減少一半。 該策略已在我工作過的許多大型生產環境中使用。
正如bpeterson76回答的那樣, $_SERVER['PATH_TRANSLATED']
和$_SERVER['SCRIPT_FILENAME']
將為您提供腳本的原始服務器路徑,然后您可以根據子域結構對其進行調整。
這些服務器變量並非始終可用,因此您可以使用PHP函數getcwd()
-這將返回腳本目錄而不包含文件名。 然后如上調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.