【发布时间】:2018-10-16 05:28:36
【问题描述】:
我有 Laravel(5.7) 项目,将部署到具有多个项目的服务器 (nginx)。我正在使用 Apache 在我的本地机器上运行该项目,我尝试使用子目录运行它,它正在我的机器上运行。
我们在服务器(nginx)的子目录中部署我的项目时遇到问题,我不知道 Laravel 项目是否有问题,因为每次我们转到我的项目的 http://172.1.1.1/sample 它总是显示“ Laravel 的 404 Page not found”,因为 Laravel 认为 /sample 是一条路径,所以我认为 172.1.1.1/sample 运行 Laravel 但它并没有将 /sample 作为它的根目录,但是当我们转到 172.1.1.1 时,另一个项目正在运行这里正在工作。我已经做的是在我的 Laravel 项目中添加以下代码。
在我的 AppServiceProvider.php - 我添加以下代码:
public function boot()
{
\URL::forceRootUrl(\Config::get('app.url'));
if (str_contains(\Config::get('app.url'), 'https://')) {
\URL::forceScheme('https');
//use \URL:forceSchema('https') if you use laravel < 5.4
}
}
这样当我在项目的 .env 中更改 APP_URL 时,它就会起作用。
APP_URL=http://localhost:9021/sample
并在我的公用文件夹的 .htaccess 中添加以下内容:
RewriteEngine On
RewriteBase /sample/
所以它适用于我的本地机器,但是当我们尝试部署它时它不起作用。一旦我们转到 172.1.1.1/sample (sample-ip),它只会显示“404 Page not found”。
我想知道是否有其他方法可以更改 laravel 5.7 的上下文路径。因为我不是在服务器中配置 nginx 的人,但我想确保问题不是因为 Laravel 5.7。
感谢你们的帮助。
【问题讨论】:
-
这个问题可以用虚拟主机解决
-
如何解决@ShaielndraGupta 先生?我的意思是我在 Laravel 中的配置是否正确,还是我需要在 Laravel 中更改某些内容?我只是想确保 Laravel 的配置没问题,因为我不是处理 nginx 配置的人。谢谢先生。
-
想要
http://localhost:9021/sample作为您的基本路径,因为您可以在单台机器上运行多个项目..?? -
服务器中有多个项目。所以项目 1 在localhost:9021 中运行,然后我们将在localhost:9021/sample 中部署我的项目。所以我的 Laravel 项目的根文件夹是localhost:9021/sample。但是发生的事情是 Laravel 将 /sample 视为路由路径,因此它返回“404 Page not found”。
-
将您的 nginx 配置为使用 localhost:9022 代替您的项目。
APP_URL只能包含APP_URL=localhost:9022等域名
标签: php laravel nginx laravel-5.7