我在机密网站上工作。我为此使用 PHP 和 MySql。
在我的网站上,当用户选择他们的城市时,我想像子域样式一样更改网站网址。例如:-
http://cityname.mywebsitename.com
在我看来,实现这一点的唯一一件事就是为所有城市创建子域。但是,当您的城市超过 50 个时,管理起来会更加困难。您不能一次又一次地为多个域上传相同的脚本。我认为这样做不是一个好主意。我想为此使用一个脚本,以便我可以以简单的方式管理它。
如果您有任何想法,请分享..
提前致谢
我在机密网站上工作。我为此使用 PHP 和 MySql。
在我的网站上,当用户选择他们的城市时,我想像子域样式一样更改网站网址。例如:-
http://cityname.mywebsitename.com
在我看来,实现这一点的唯一一件事就是为所有城市创建子域。但是,当您的城市超过 50 个时,管理起来会更加困难。您不能一次又一次地为多个域上传相同的脚本。我认为这样做不是一个好主意。我想为此使用一个脚本,以便我可以以简单的方式管理它。
如果您有任何想法,请分享..
提前致谢
您不能一次又一次地为多个域上传相同的脚本。
你不需要。单个 Web 服务器可以支持多个域,并且可以在它们之间共享文件。例如,参见Apache 设置“虚拟主机”的示例。
只需设置一个 DNS 通配符,以便它们都转到同一个站点。然后使用 PHP,您可以找出当前正在使用的子域。如果您希望信息在所有人之间都可以访问,请确保他们都使用基于域而不是子域的 SESSION 或 COOKIE。
您还需要设置 apache 以接受通配符。这样所有子域都被定向到相同的代码。
$urlParts = explode('.', $_SERVER['HTTP_HOST']);
$subdomain = $urlParts[0];
我告诉你我是怎么做到的:
在 DNS 中添加通配符子域记录
*.domain.tld。在 1.2.3.4 中
添加通配符虚拟主机
<VirtualHost 1.2.3.4>
DocumentRoot /var/www/vhosts/wildcard
ServerAlias *.domain.tld.
ServerName domain.tld
...
</VirtualHost >
创建一个 .htaccess 将所有请求重定向到 FrontController(通常是 index.php)
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
从 php解析$_SERVER['HTTP_HOST']
以获取城市名称并使用新的 FrontController(通常是 index.php)
我已经在带有 linux 和 plesk 的专用服务器或 VPS 上完成了它。通过对之前的基点进行一些修改,到处都是可能的;)
不要走使用 Apache Virtual Hosts 的路径......虽然您可以将脚本存储在一个公共文件夹中并通过 PHP 访问它们(include('../common_scripts/file.php')
您仍然必须管理 vhost 配置。最好设置一个 DNS 通配符,然后有一个在运行查询时考虑当前 URL 的单个站点。