在域路径上安装Laravel

时间:2018-02-08 07:02:36

标签: php laravel laravel-5.5

我创建了一个与我的主网站相关的新Laravel项目(v5.5)。由于SEO技术方面的考虑,我希望链接如下:x3C

1200k<mainwebsite.com/laravel>都部署到单个服务器。应用程序负载均衡器将流量重定向到主站点或新的Laravel项目。

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

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

有没有更好的方法来设置它,或者有人知道必须如何做到这一点吗?

2 个答案:

答案 0 :(得分:2)

以下为我做了诀窍。

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

  2. 将公用文件夹的内容移动到公用文件夹内的新文件夹中,并为其指定与URL后面的路径相同的名称(因此在这种情况下,请参阅#la; laravel&#39;)。

  3.   

    /公共

         

    --- / laravel

         

    ------ / css

         

    ------ / js

         

    ------ index.php

         

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

    1. 编辑index.php文件中的相对路径:
    2. require __DIR__.'/../../vendor/autoload.php';&amp;

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

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

答案 1 :(得分:0)

如果您正在使用apache,请设置.htaccess以重写网址:

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

这应该将所有不以laravel开头的网址路径重写为。{/ p>

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

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