我想製作當前site.com
的某些區域子域名 - 類似city1.site.com
和city2.site.com
,但我不想將所有文件從原始域複製到子域。
是否可以在子域city1.site.com
上顯示與site.com
相同的信息,但只需設置一個變量,如$city = 123
?通過city1.site.com
上的這個變量,我可以顯示這個城市更具體的聯繫人和產品。區域子域名
我是新來的子域,所以請幫助,我的網站是在PHP & MySQL。謝謝!
我想製作當前site.com
的某些區域子域名 - 類似city1.site.com
和city2.site.com
,但我不想將所有文件從原始域複製到子域。
是否可以在子域city1.site.com
上顯示與site.com
相同的信息,但只需設置一個變量,如$city = 123
?通過city1.site.com
上的這個變量,我可以顯示這個城市更具體的聯繫人和產品。區域子域名
我是新來的子域,所以請幫助,我的網站是在PHP & MySQL。謝謝!
如果您的區域很少,則可以爲每個區域手動創建子域,並將這些域指向與主站點相同的文件夾。然後,在腳本中,您可以抓住主機並將其與區域匹配,並將所需的值分配給一個變量。
<?php
if($_SERVER['HTTP_HOST'] === 'city1.site.com') {
$city = 123;
} else if($_SERVER['HTTP_HOST'] === 'city2.site.com') {
$city = 223;
}
如果你有許多地區和需要一種充滿動感的比賽,你可以任意子域匹配你的主站點路徑和腳本中可以使用的方法來獲得的子域,在數據庫中進行搜索。示例:
<?php
$subdomain = strstr($_SERVER["HTTP_HOST"], '.', true);
$city = getRegion($subdomain);
if(!$city) {
// throw 404 error
header('HTTP/1.0 404 Not Found');
exit;
}
// getRegion($subdomain) is a method that should search your database to match the subdomain to a region
要將所有子域匹配到路徑,您需要在CPanel中使用通配符。參見教程:https://www.namecheap.com/support/knowledgebase/article.aspx/9191/29/how-to-create-a-wildcard-subdomain-in-cpanel
你或許可以使用$_SERVER
超全局變量在PHP(閱讀文檔:http://php.net/manual/en/reserved.variables.server.php尤其是$_SERVER['HTTP_HOST']
)找出來,其子域是當前一個(如果有的話)
其餘部分可能是容易的,例如根據當前的子域名就像switch語句
switch($_SERVER['HTTP_HOST']) {
case 'city1.site.com': $abc=1; break;
case 'city2.site.com': $abc=2; break;
default: $abc=0; break;
}
更新:的想法是,使用相同的代碼,所有子域(你不想保持副本的任意量),並通過強制不同的行爲碼。也許你甚至可以設置一個「catchall」域名。
所以,如果你設置你的域site.com
住在你的服務器的htdocs/site.com
目錄,使用同一目錄所有其他領域也是如此。
要爲您的網站實現不同的輸出,那麼你檢查$abc
變量或一些其他變種(甚至$_SERVER['HTTP_HOST']
)做
if(strpos($_SERVER['HTTP_HOST'],'.site.com') !== FALSE) {
$subdomain = str_replace('.site.com','',$_SERVER['HTTP_HOST']);
}
else {
$subdomain = null;
}
// now 'city1' is in $subdomain
已提取的子域後,您可以運行SQL查詢或就像這個值一樣(如果你的數據庫設置得當)。
第一步是確保您的DNS記錄已準備就緒。如果它尚不存在,請爲以下內容添加A記錄。
編輯 - 如果你正在使用一個共享的主機,這可能無法正常工作END
設置的名稱部分爲「*」,然後珍惜到您當前使用的服務器IP地址的下一個。一旦這個規則到位,人們可以去{任何} .site。com並將全部發送到同一臺服務器。
在這一點上,我會做一些類似Jakumi的答案的東西,但保持它的簡單
/* Cut up the URL */
$hostDetails = explode('.', $_SERVER['HTTP_HOST']);
/* Get the first part (city) of the URL */
$city = current($hostDetails);
/* Default check */
if($city == 'site') { $city = 'YOUR_DEFAULT'; }
謝謝你的教程,但是像nothing.site.com這樣的不需要的子域名呢?如何阻止他們展示,特別是不被Google掃描? – Ilya
如果你有一個不存在的城市,則拋出一個404錯誤來告訴google該頁面不存在。 你需要製作sitemap.xml文件來告訴谷歌什麼索引。 –
好吧,我想404會做到這一點!謝謝! – Ilya