将新的Laravel项目部署到实时服务器 - 内页链接不起作用

时间:2016-11-16 12:00:26

标签: php mysql laravel laravel-5 ftp

我最近通过FTP(Filezilla)将Laravel项目部署到我的实时Web服务器。在我的young1.org网络根文件夹中,我有子域文件夹预订,它在http://bookings.young1.org显示网页内容。在该文件夹中,我有一个包含整个laravel应用程序的文件夹'laravel',在该文件夹中有一个'public'目录。

我已经通过phpmyadmin将我的本地数据库导入到实时Web服务器上的一个数据库帐户,并且我已经将“DB”凭据切换为指向laravel项目根目录中env文件内的新数据库(更改以下变量:DB_DATABASE,DB_USERNAME,DB_PASSWORD)。

当我导航到http://bookings.young1.org/laravel/public时,我的应用程序的主页显示,很好,很花哨。但是,当我点击任何内部链接(例如登录和注册)按钮时,我只会得到一系列空白页面,而且没有任何内部页面出现。

有人能够猜出问题可能是什么吗?

我尝试将.htaccess文件更改为如下所示,并在public / index.php中更改我的'PATHS'变量。

谢谢,

罗伯特 英国伦敦

// public / .htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On
RewriteBase /

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

// public / index.php

require DIR.'/../laravel/bootstrap/autoload.php';

$app = require_once DIR.'/../laravel/bootstrap/app.php';

2 个答案:

答案 0 :(得分:0)

  

你在服务器上有SSH吗?如果是,你按照你应该安装laravel,也可以包含.env文件内容,你可以掩盖数据库用户名并传递你必须生成的密钥

不介意我的错误,我点击链接并得到SQL连接错误(拒绝)

我仍然需要知道你是否通过SSH安装了laravel,或者你只是将公共文件夹设置为root,因为如果是这样的话laravel无法帮助你(你需要一个VPS而不是一个webhost,据我所知,只支持FTP)

并且确定

  

小心!!!“

您有显示凭据的SQL连接错误

答案 1 :(得分:0)

请注意,如果您在其中使用index.php,则您的网址可以正常工作,即: http://bookings.young1.org/laravel/public/index.php/register

要允许没有index.php的网址,必须启用Apache Web服务器上的 mod_rewrite 模块。

首先尝试在Laravel的.htaccess文件中将此行添加到RewriteEngine On:

Options +FollowSymLinks

需要此指令才能在.htaccess上下文中启用mod_rewrite。

如果在此之后它没有工作,那么您可以检查您的Web服务器上是否启用了模块,最简单的方法是将其粘贴到公共文件夹中index.php的开头:

phpinfo();

然后打开任何页面并在页面上搜索mod_rewrite,看看是否可以在Loaded Modules下找到它。如果没有,你必须启用它。

为此,如果您可以通过SSH访问,则可以执行以下操作:

sudo a2enmod rewrite
sudo service apache2 restart

有关在Apache Web服务器上启用mod_rewrite的更多帮助,请选中this answer