我已经浏览了几乎所有关于该主题的页面,但我仍然有点困惑。
我有一个PHP Laravel 4.0网站,位于
当用户注册时,每个用户都会获得自己的页面
我在我的VPS DNS管理器(Linode)上通过通配符子域设置了上述内容。
在我的Laravel中,我有一个域路由,可以获取子域并显示正确的用户页面。一切顺利。
现在,我想要实现的是让用户使用自己的域名并指向我们网站上的页面。
因此,如果用户注册
我希望此域名指向http://user1.mywebsite.com
我不想要重定向,但网址仍然保留在http://www.user1domain.com(显然)。
我知道像Tumblr这样的网站允许这样做。
我可以采取哪些措施来实现这一目标?以下是我在研究期间想到的一些事情。
让用户将自定义域“user1domain.com”指向我的VPS名称服务器(简单)。
在我的结尾(这里我不知道),我
创建新的DNS条目? (在我的Linode VPS中,我会在“DNS管理器”和“添加域名区域”中执行此操作)
我正在使用Apache,所以我必须创建一个VirtualHost(就像我为所有其他网站所做的那样),这是否意味着我必须为每个想要使用的用户创建一个新的VirtualHost文件自定义域名?
如果不是VirtualHost,我该如何实际指向我的Web应用程序文件夹? Apache别名? (我该如何设置?)
假设用户的域名现在“指向”我的网络应用程序,我现在如何在Laravel中选择它? (我猜我会像对待子域一样这样做)
感谢您的时间。
答案 0 :(得分:8)
问题:创建新的DNS条目? (在我的Linode VPS中,我会在“DNS管理器”和“添加域名区域”中执行此操作)
答案:是的,您需要让用户将其域名指向您的域名服务器。您还必须将其域添加到DNS管理器中。
问题:我正在使用Apache,所以我必须创建一个VirtualHost(就像我为所有其他网站所做的那样),这是否意味着我必须为每个想要使用a的用户创建一个新的VirtualHost文件自定义域名?
如果不是VirtualHost,我如何实际指向我的Web应用程序文件夹? Apache别名? (我该如何设置?)
答案:您可以为所有人设置一个虚拟主机配置,如Using default vhosts中所述。
<VirtualHost _default_:80>
DocumentRoot /var/www/mysharedsite
# ...
</VirtualHost>
因此,请求服务器的所有域名都将由您唯一的代码库提供服务。
问题:假设用户的域名现在“指向”我的网络应用程序,我现在如何在Laravel中选择它? (我猜我的做法和我的子域名一样)
我现在可以想到两种方法。是的,您可以在Sub-Domain Routing上修改Laravel的文档,但改为使用不同的域:
Route::group(array('domain' => 'user1domain.com'), function()
{
Route::get('blog/{id}', 'BlogController@view');
});
但我认为不同域之间的功能将完全相同,只有数据发生变化,您可以随时使用:
Request::getHost();
因此,您可以获取域名,并将其映射到数据库中的website_id列以获取正确的内容。
确保在项目中仔细列出可接受的域名列入白名单。让所有域名都不是一个好主意。您也可以在虚拟主机中使用ServerName
和ServerAlias
进行限制,但我认为这限制了让新用户拥有自己的域的灵活性。
答案 1 :(得分:0)
基本上,对于创建的动态通配符,您只需要这个..
将域(A记录)上的通配符设置为您的服务器IP地址
*.mywebsite.com IN A 192.168.1.1
设置您的服务器名称&amp;用于VirtualHost中域名的Apache Confuff
ServerName mywebsite.com
ServerAlias mywebsite.com *.mywebsite.com
在窗口控制台上清除dnscache
ipconfig/flushdns
希望这个帮助