1

我在机密网站上工作。我为此使用 PHP 和 MySql。

在我的网站上,当用户选择他们的城市时,我想像子域样式一样更改网站网址。例如:-

http://cityname.mywebsitename.com

在我看来,实现这一点的唯一一件事就是为所有城市创建子域。但是,当您的城市超过 50 个时,管理起来会更加困难。您不能一次又一次地为多个域上传相同的脚本。我认为这样做不是一个好主意。我想为此使用一个脚本,以便我可以以简单的方式管理它。

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

提前致谢

4

4 回答 4

2

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

你不需要。单个 Web 服务器可以支持多个域,并且可以在它们之间共享文件。例如,参见Apache 设置“虚拟主机”的示例

于 2012-09-21T19:21:46.430 回答
2

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

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

$urlParts = explode('.', $_SERVER['HTTP_HOST']);
$subdomain = $urlParts[0];
于 2012-09-21T19:25:01.913 回答
2

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

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

    *.domain.tld。在 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)

我已经在带有 linux 和 plesk 的专用服务器或 VPS 上完成了它。通过对之前的基点进行一些修改,到处都是可能的;)

于 2012-09-21T19:32:18.740 回答
1

不要走使用 Apache Virtual Hosts 的路径......虽然您可以将脚本存储在一个公共文件夹中并通过 PHP 访问它们(include('../common_scripts/file.php')您仍然必须管理 vhost 配置。最好设置一个 DNS 通配符,然后有一个在运行查询时考虑当前 URL 的单个站点。

于 2012-09-21T19:25:57.680 回答