【问题标题】:Install Laravel on domain path在域路径上安装 Laravel
【发布时间】:2018-02-08 07:02:36
【问题描述】:

我创建了一个与我的主网站相关的新 Laravel 项目 (v5.5)。由于 SEO 技术方面的考虑,我希望链接是这样的:<mainwebsite.com/laravel>

<mainwebsite.com><mainwebsite.com/laravel> 都部署到单独的服务器上。 Application Load Balancer 将流量重定向到主网站或新的 Laravel 项目。

现在的问题是 Laravel 应用程序不知道 <mainwebsite.com/laravel> 必须被视为项目的根。 (路由/必须到<mainwebsite.com/laravel>而不是<mainwebsite.com>

我尝试将Route::prefix('laravel')->group() ... 添加到web.php,它确实修复了路由,但是无法访问应用程序的公共目录。 使用 "/css/app.css""/laravel/css/app.css" 之类的相对路径无法解决此问题。

有没有更好的方法来设置它,或者有人知道必须如何完成吗?

【问题讨论】:

标签: php laravel laravel-5.5


【解决方案1】:

以下内容对我有用。

  1. 将.env文件中的APP_URL改为http://www.mainwebsite.com/laravel

  2. 将公用文件夹的内容移动到公用文件夹内的新文件夹中,并将其命名为与 URL 后面的路径相同的名称(在本例中为“laravel”)。

/公开

--- /laravel

-----/css

-----/js

-----index.php

-----... 等等...

  1. 编辑index.php文件中的相对路径:

require __DIR__.'/../../vendor/autoload.php'; &

require_once __DIR__.'/../../bootstrap/app.php';(添加一个额外的/../

  1. webpack.mix.js 中设置正确的路径,并将以下规则添加到文件的开头,以确保文件中的相对路径将被重写到正确的目录: mix.setPublicPath('public/laravel/'); mix.setResourceRoot('/laravel/');

就是这样!

【讨论】:

    【解决方案2】:

    如果您使用的是 apache,请设置 .htaccess 来重写 url:

    <IfModule mod_rewrite.c>
       RewriteEngine on
       RewriteCond %{REQUEST_URI} !^/laravel/
       RewriteRule ^(.*)$ /laravel/$1 [L,R=301]
    </IfModule>
    

    这应该将所有不以laravel 开头的url 路径重写为以laravel 开头的路径。

    对于 nginx,您可以执行以下操作:

    location ^~ /laravel(.*) {
      return 301 $scheme://$http_host/laravel$1$is_args$query_string;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 2012-10-26
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多