不同用户的假子域,同时仍浏览相同的文件夹结构
Fake subdomain for different users while still browsing same folder structure
我想为不同的用户创建假的子域以获得更多的虚荣心,并让用户(在本例中为公司)感觉他们处于一个更加孤立的环境中。
为了可维护性,所有用户仍然浏览相同的文件对我来说很重要,以避免在更新代码时必须为存在的每个用户更新文件。
我的网站在根目录下有一个 public 部分,比方说 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/? [R=302,L]
一旦你发现它工作正常,将 302 替换为 301
注意:请务必注意,您需要添加子域通配符
最后解决的超级简单!它并没有像我最初预期的那样使用 .htaccess 解决。我用通配符子域解决了这个问题。
注册新的子域时,在域前缀中输入*,例如*.example.com。通配符子域的文件夹将在您的服务器上创建,例如 _wildcard_.example.com。每当你访问 site1.example.com, fakesub.example.com 等时,访问者的浏览器将读取文件通配符.example.com 文件夹。
这一切的美妙之处在于,如果我创建了一个我想使用的子域,例如 forum.example.com,这个真正的子域将具有优先权通过通配符子域,文件将从该子域的文件夹中获取,而不是从通配符子域文件夹中获取。
我使用 PHP 并且需要知道子域以便为当前用户获取适当的数据库。为此,我使用以下代码:
$subdomain = explode('.', $_SERVER['HTTP_HOST'])[0]
使用通配符 SSL 证书,我可以保护所有这些子域。
我想为不同的用户创建假的子域以获得更多的虚荣心,并让用户(在本例中为公司)感觉他们处于一个更加孤立的环境中。
为了可维护性,所有用户仍然浏览相同的文件对我来说很重要,以避免在更新代码时必须为存在的每个用户更新文件。
我的网站在根目录下有一个 public 部分,比方说 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/? [R=302,L]
一旦你发现它工作正常,将 302 替换为 301
注意:请务必注意,您需要添加子域通配符
最后解决的超级简单!它并没有像我最初预期的那样使用 .htaccess 解决。我用通配符子域解决了这个问题。
注册新的子域时,在域前缀中输入*,例如*.example.com。通配符子域的文件夹将在您的服务器上创建,例如 _wildcard_.example.com。每当你访问 site1.example.com, fakesub.example.com 等时,访问者的浏览器将读取文件通配符.example.com 文件夹。
这一切的美妙之处在于,如果我创建了一个我想使用的子域,例如 forum.example.com,这个真正的子域将具有优先权通过通配符子域,文件将从该子域的文件夹中获取,而不是从通配符子域文件夹中获取。
我使用 PHP 并且需要知道子域以便为当前用户获取适当的数据库。为此,我使用以下代码:
$subdomain = explode('.', $_SERVER['HTTP_HOST'])[0]
使用通配符 SSL 证书,我可以保护所有这些子域。