我正在分类网站上工作。我正在使用PHP和MySql。
在我的网站上,当用户选择他们的城市时,我想要更改网站URL,如子域风格。 foreg: -
http://cityname.mywebsitename.com
在我的脑海中,实现这一点只有一件事是为所有城市创建子域名。但是当你的城市超过50岁时,管理会更加困难。您无法一次又一次地上载多个域的相同脚本。我认为这不是一个好主意。我想使用一个脚本,所以我可以用简单的方式管理它。
如果您有任何想法请分享..
提前致谢
答案 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)
我告诉你我是怎么做到的:
添加通配符子域记录
*。使用domain.tld。在A 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上完成了它。通过对先前基点的一些修改,可以在任何地方使用;)
答案 3 :(得分:1)
不要走上使用Apache虚拟主机的道路......虽然您可以将脚本存储在公共文件夹中并通过PHP(include('../common_scripts/file.php')
)访问它们,但仍需要管理vhost配置。更好地设置启动DNS通配符,然后有一个站点在运行查询时考虑当前URL。