【问题标题】:Laravel multisite with domain mapping带有域映射的 Laravel 多站点
【发布时间】:2014-10-15 08:00:24
【问题描述】:

我正在尝试在 Laravel 中创建一个多站点,因此只有一个代码库,但有多个站点在其中运行。每个站点都将具有相似的功能,因此可以重用代码,但每个站点将使用不同的主题 - 我想这就像在视图文件夹中拥有不同的主题并根据客户所经历的域映射它们一样简单。

我希望能够从 www.sitex.com 访问站点 X,从 www.sitey.com 访问站点 Y 等,同时只安装一个 laravel 并且不求助于任何虚拟主机 tomfoolery。

你们中的任何人会好心给我一个解决方案的建议,或者给我指出正确的方向吗?到目前为止,我几乎没有找到任何东西!

谢谢

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    如果您的路由不会太复杂,您可能会避免拥有大量公共文件夹

     laravel
       app
       bootstrap
       sitex.com
       sitey.com
       vendor
    

    那么您的每个站点都将是它自己的虚拟主机,没有像这样的时髦别名规则(为了安全,请确保无法访问 laravel 根目录):

    DocumentRoot "/var/www/laravel/sitex.com"
    

    最后,您可以在 bootstrap/paths.php 中放置一个变量,其中公共路径将是

    'public' => __DIR__.'/../'.preg_match('/\w+.com/',$_SERVER['SERVER_NAME']),
    

    这应该适用于大多数部署,即使使用子域路由也是如此,因为引导程序是从每个公共文件夹中的 index.php 文件启动的。如果你想使用 artisan 来加载内置的 php 服务器,你需要提供--host 否则它将无法工作。我遇到的这种设置会有一些限制,所以如果其他人知道更好的方法,我很想自己学习。

    【讨论】:

    • 不幸的是,我对虚拟主机的访问权限为零! Wordpress 设法做到这一点而无需接触它,但是当你可以使用 Laravel 时,谁还想使用 Wordpress?
    • 那么你的情况实际上既简单又困难。您根据 $_SERVER['SERVER_NAME'] 设置一个常量,该常量控制加载的站点以及您的条件检查、路由等,并且您已完成设置。困难的部分是每个资源和链接都必须存储完整的 url 才能知道它属于哪个站点。如果您查看 Wordpress 数据库,每个帖子、图像等都将包含其所属域的完整 url。支持比建立起来需要更多的纪律。你可能想要创建 app/start/multisite.php 来组织你的代码。
    猜你喜欢
    • 2015-07-26
    • 2021-10-24
    • 1970-01-01
    • 2012-03-12
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多