【问题标题】:Laravel remove public from url in multi project setupLaravel 在多项目设置中从 url 中删除公共
【发布时间】:2017-04-06 09:13:17
【问题描述】:

我有一台服务器,打算用来托管多个项目。到目前为止的结构是这样的

public_html
- project1
- project2

在各个项目文件夹中是 Laravel 安装。我现在访问项目的方式是http://www.website.com/project1/public

如何从我的网址中删除该公共链接?我试图在 project1 的根目录中设置一个 htaccess 文件,但它似乎不起作用。

感谢您的帮助!

【问题讨论】:

  • 你想为同一个域使用不同的项目吗???
  • 是的,例如 www.website.com/project1 和 www.website.com/project2
  • 我想如果你使用子域来托管多个项目会更好。

标签: laravel laravel-5


【解决方案1】:

为此,您需要重新构建将文件放在服务器上的方式。

首先你需要具备以下条件

project1
project2
public_html
    -project1
    -project2

您将在根项目文件中安装所有应用程序文件。但是不要将您的公共文件夹放在这里,例如

project1
 -app
 -bootstrap
 -(rest of folders)
project2
    -app
    -bootstrap
    -(rest of folders)
public_html
    -project1
    -project2

对于每个项目,将其各自公用文件夹中的所有内容放入 project1 和 project2 文件夹中,然后删除您的公用文件夹。您基本上要重新映射 public_html->project1public_html->project2 文件夹作为您的公用文件夹

你现在需要通过改变 server.php 文件告诉 laravel 你的公用文件夹在哪里

更改 project1/server.php
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
    return false;
}

require_once __DIR__.'/public/index.php';

if ($uri !== '/' && file_exists(__DIR__.'/public_html/project1'.$uri)) {
    return false;
}

require_once __DIR__.'/../public_html/project1/index.php';

project2 执行相同操作,但使用project2 名称而不是project1

你现在应该发现,如果你去 www.example.com/project1 它应该去正确的项目

【讨论】:

  • 哇哦。我会尝试一下,让你知道它是否有效!谢谢!
  • 目前公共文件只有css、js、index.php等项。这是否意味着我的视图文件和控制器也会进入根目录?
  • 没有你所有的资源都留在你的 laravel 安装中。从那里移动的唯一一点是公共的一切,甚至是 htaccess
  • 是的,目前我的公共文件夹中唯一的文件是 htaccess、favicon、index、robots、css 文件夹和 js 文件夹。我的所有其他项目都在公共文件夹之外
【解决方案2】:

我已经从这个网站http://tutsnare.com/remove-public-from-url-laravel/ 尝试过这种方法,它似乎对我有用。希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-06-09
    • 2017-02-27
    • 2016-06-09
    • 2019-03-30
    • 2013-03-13
    • 2015-04-06
    • 2019-06-26
    • 2021-08-08
    相关资源
    最近更新 更多