我想为不同的用户创建虚假的子域名以获得更多虚荣,并使用户(在这种情况下是公司)感觉他们处于更加孤立的环境中。
为了可维护性,对我来说重要的是所有用户仍然浏览相同的文件,以避免在更新代码时为每个用户更新文件。
我的网站有一个公共部分在根,让我们说www.example.com
。我希望能够伪造以下类型的子域:
user1.example.com
真正的URL将是www.example.com/member/?user=user1
。我希望文件夹结构遵循相同的模式。 www.example.com/member/settings/?user=user1
将出现在user1.example.com/settings/
等等。
我认为这最好用.htaccess
实现,不是吗?什么是适当的.htaccess
代码?
谢谢!
基于你在这里提供的信息,有点.htaccess没有经过测试,但可以完成这项工作。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC]
RewriteCond %{QUERY_STRING} ^user=(.*)$
RewriteRule ^(.*)$ http://%1.example.com/$2? [R=302,L]
一旦发现它工作正常,请将302替换为301
注意:请务必注意,您需要添加子域通配符
最后,这很容易解决!然而,使用.htaccess并没有按照我的预期方式解决。我用一个名为wildcard subdomain的东西解决了它。
注册新子域时,请在域前缀中输入*,例如* .example.com。将在您的服务器上创建通配符子域的文件夹,例如_wildcard_.example.com。每当您访问site1.example.com,fakesub.example.com等时,访问者的浏览器将读取wildcard.example.com文件夹中的文件。
这一切的美妙之处在于,如果我创建一个我想要使用的特定子域,例如forum.example.com,这个真正的子域将优先于通配符子域,并且将从该子域的文件夹中获取文件,而不是来自wildcard子域文件夹。
我使用PHP并且需要知道子域以获取当前用户的相应数据库。为此,我使用以下代码:
$subdomain = explode('.', $_SERVER['HTTP_HOST'])[0]
使用通配符SSL证书,我将所有这些子域都安全。