伪造不同用户的子域,同时仍浏览相同的文件夹结构

时间:2018-09-26 22:44:15

标签: .htaccess subdomain wildcard-subdomain

我想为不同的用户创建虚假的子域,以提高效率,并使该用户(在本例中为公司)感到自己处于更孤立的环境中。

出于可维护性的考虑,对我来说重要的是所有用户仍应浏览相同的文件,以避免在更新代码时必须为存在的每个用户更新文件。

我的网站的根源是公共部分,例如Private Sub Workbook_Open() Sheet1.Activate Call Worksheet_Change(Target) End Sub 。我希望能够伪造以下类型的子域:

www.example.com

真实URL为user1.example.com 。我希望文件夹结构遵循相同的模式。 www.example.com/member/?user=user1将显示为www.example.com/member/settings/?user=user1,依此类推。

我认为最好通过user1.example.com/settings/来实现,不是吗? 正确的.htaccess代码是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

根据您提供的信息,这里有一些.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

注意:请务必注意,您需要添加子域通配符

答案 1 :(得分:0)

最后,这非常容易解决!但是,使用.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证书,我可以保护所有这些子域的安全。