2012-09-21 58 views
1

我正在分類網站上工作。我正在使用PHP和MySql。如何管理分類網站中的多個城市?

我的網站上,當用戶選擇他們的城市,那個時候我想改變網站的網址像子域的風格。 foreg: -

http://cityname.mywebsitename.com

只有一個在我的腦海裏實現這個東西是爲所有人創造城市的子域。但是當你的城市超過50人時,管理起來會更困難。您無法一次又一次上傳多個域的相同腳本。我認爲這不是一個好主意。我想使用一個腳本,所以我可以用簡單的方法來管理它。

如果您有任何想法比請分享..

在此先感謝

回答

2

我說你我是如何做到的:

  1. 在DNS中添加通配符子域名記錄

    * .domain.tld。 IN A 1.2.3.4

  2. 添加通配符的虛擬主機

    <VirtualHost 1.2.3.4> 
    DocumentRoot /var/www/vhosts/wildcard 
    ServerAlias *.domain.tld. 
    ServerName domain.tld 
    ... 
    </VirtualHost > 
    
  3. 創建重定向所有請求到FrontController(通常的index.php)

    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
    
  4. 從PHP解析$_SERVER['HTTP_HOST']一個的.htaccess獲得城市名稱,並以新FrontController(通常的index.php)發揮

我已經做了專門的服務器或VPS與Linux和Plesk上。對以前的基準點進行了一些修改,這是可能的無處不在;)

+0

Thankyou非常多@KernelFolla用於描述.. :) –

+0

步驟3與問題無關。雖然這是一個很好的方法,但它並不涉及通配符子域。 – Pitchinnate

+0

我可以使用這種技術共享主機服務器.. becos權利我使用共享主機..或我必須購買專用主機? –

2

你不能一次又一次地爲多個域上傳相同的腳本。

你不會需要。一個Web服務器可以支持多個域,文件可以在它們之間共享。參見例如Apache's examples of setting up "virtual hosts"

+0

ohh ..感謝回覆@ruakh。我也可以使用它的子域。因爲我對服務器管理沒有太多的知識。 :) –

2

剛剛設置的DNS通配符讓他們都去同一個網站。然後使用PHP,你可以找出當前正在使用的子域名。如果您希望所有信息都可以訪問,請確保它們都使用基於域而不是子域的SESSION或COOKIE。

您還需要配置Apache來接受通配符。這樣所有的子域都被定向到相同的代碼。

$urlParts = explode('.', $_SERVER['HTTP_HOST']); 
$subdomain = $urlParts[0]; 
+0

這裏是一個鏈接,應該幫助你儘可能設置你的DNS和Apache。 http://ma.tt/2003/10/wildcard-dns-and-sub-domains/ – Pitchinnate

+0

謝謝@Pitchinnate。你可以給我任何樣本鏈接.. ??以便我可以下載並在我的服務器上測試它.. ?? –

1

不要去使用Apache虛擬主機的路徑...儘管你可以存儲腳本在一個共同的文件夾,並通過PHP訪問所有這些(include('../common_scripts/file.php')你仍然需要管理虛擬主機的配置,更好的設置。一個DNS通配符,然後有一個單一的網站運行查詢時考慮到當前的URL

相關問題