如何管理分类网站中的多个城市?

时间:2012-09-21 19:17:15

标签: php mysql url-rewriting web subdomain

我正在分类网站上工作。我正在使用PHP和MySql。

在我的网站上,当用户选择他们的城市时,我想要更改网站URL,如子域风格。 foreg: -

http://cityname.mywebsitename.com

在我的脑海中,实现这一点只有一件事是为所有城市创建子域名。但是当你的城市超过50岁时,管理会更加困难。您无法一次又一次地上载多个域的相同脚本。我认为这不是一个好主意。我想使用一个脚本,所以我可以用简单的方式管理它。

如果您有任何想法请分享..

提前致谢

4 个答案:

答案 0 :(得分:2)

  

您无法一次又一次地为多个域上传相同的脚本。

你不需要。单个Web服务器可以支持多个域,并且可以在它们之间共享文件。例如,请参阅Apache's examples of setting up "virtual hosts"

答案 1 :(得分:2)

只需设置DNS通配符,即可将它们全部转到同一站点。然后使用PHP,您可以找出当前正在使用的子域。如果您希望在所有子域之间访问信息,请确保它们都使用基于域而不是子域的SESSION或COOKIE。

您还需要设置apache以接受通配符。这样所有子域都可以定向到相同的代码。

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

答案 2 :(得分:2)

我告诉你我是怎么做到的:

    DNS中的
  1. 添加通配符子域记录

    *。使用domain.tld。在A 1.2.3.4

  2. 添加通配符虚拟主机

    <VirtualHost 1.2.3.4>
    DocumentRoot /var/www/vhosts/wildcard
    ServerAlias *.domain.tld.
    ServerName domain.tld
    ...
    </VirtualHost >
    
  3. 创建一个.htaccess,将所有请求重定向到FrontController(通常是index.php)

    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
  4. 从php解析$_SERVER['HTTP_HOST']获取城市名称并使用新的FrontController(通常是index.php)

  5. 我在专用服务器或带有linux和plesk的VPS上完成了它。通过对先前基点的一些修改,可以在任何地方使用;)

答案 3 :(得分:1)

不要走上使用Apache虚拟主机的道路......虽然您可以将脚本存储在公共文件夹中并通过PHP(include('../common_scripts/file.php'))访问它们,但仍需要管理vhost配置。更好地设置启动DNS通配符,然后有一个站点在运行查询时考虑当前URL。