我创建了一个与我的主网站相关的新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() ...
等相对路径无法解决此问题。
有没有更好的方法来设置它,或者有人知道必须如何做到这一点吗?
答案 0 :(得分:2)
以下为我做了诀窍。
将.env文件中的APP_URL更改为http://www.mainwebsite.com/laravel
将公用文件夹的内容移动到公用文件夹内的新文件夹中,并为其指定与URL后面的路径相同的名称(因此在这种情况下,请参阅#la; laravel&#39;)。
/公共
--- / laravel
------ / css
------ / js
------ index.php
------ ......等......
index.php
文件中的相对路径: require __DIR__.'/../../vendor/autoload.php';
&amp;
require_once __DIR__.'/../../bootstrap/app.php';
(添加额外的/../
)
webpack.mix.js
中设置正确的路径,并将以下规则添加到文件的开头,以确保文件中的相对路径将被重写为正确的目录:
mix.setPublicPath('public/laravel/');
mix.setResourceRoot('/laravel/');
那就是它!
答案 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;
}