当前位置: 首页 > 知识库问答 >
问题:

Laravel |共享托管路由无法正常工作

百里意智
2023-03-14

我正在尝试在共享主机(godaddy)上部署我的Laravel项目,到目前为止,我只取得了部分成功。

我采取了以下步骤:

  • 创建子域abc.xyz.com,root-

现在我可以成功登录,这将我带到abc.xyz.com/public,但是我所有其他没有/Public的路由都不工作。例如:

  • abc.xyz.com/public-作品
  • abc.xyz.com/home-不工作

我注意到,如果我手动添加/Public到他们工作的所有路由!。

我的htaccess:

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

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

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

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

那么,如何像abc那样附加/public。xyz。com/public到所有路线?我不太擅长修改。htaccess但我在网上尝试了一些解决方案,但没有成功。

共有3个答案

卫寒
2023-03-14

您需要将您的网站的文档根目录更改为您的应用程序的公共文件夹,即。

public_html/finance/.

应该是:

public_html/finance/public

https://laravel.com/docs/5.4/installation#configuration

希望这有帮助!

陈扬
2023-03-14

您可能可以移动您的public/。htaccess和public/index。将php链接到laravel项目的根文件。

温镜
2023-03-14

摘自在Linux服务器上共享主机上部署Laravel 5应用程序。原始作者是唐卡纳什、激情无限、皮特·休斯顿和凯斯利克。归属详细信息可以在贡献者页面上找到。该源在CC BY-SA 3.0下获得许可,可以在文档存档中找到。参考主题ID:2410。

默认情况下,Laravel project的public文件夹公开任何人都可以从任何地方请求的应用程序内容,没有适当权限的任何人都看不到或无法访问应用程序的其余代码。

在开发机器上开发应用程序后,需要将其推送到生产服务器,以便可以从任何地方通过internet访问它-对吗?

对于大多数应用程序/网站,第一选择是使用GoDaddy、HostGator等托管服务提供商提供的共享托管包,这主要是因为成本较低。

注意:您可以要求您的提供商手动更改document_root,所以您所要做的就是将Laravel应用程序上传到服务器(通过FTP),请求将root更改为{app}/Public,您应该就可以了。

然而,这种共享主机包在终端访问和文件权限方面有限制。默认情况下,必须将其应用程序/代码上传到共享托管帐户上的public_html文件夹。

所以,如果你想上传一个Laravel项目到一个共享托管帐户,你会怎么做呢?您是否应该将整个应用程序(文件夹)上载到共享主机帐户上的public\u html文件夹中当然不是

因为public\u html文件夹中的所有内容都可以“公开即任何人”访问,这将是一个很大的安全风险。

将项目上载到共享托管帐户的步骤-Laravel方法

步骤1
在与public_html文件夹相同的级别上创建一个名为laravel(或任何您喜欢的文件夹)的文件夹。

Eg:  
/
|--var  
    |---www
        |----laravel       //create this folder in your shared hosting account
        |----public_html  
        |----log  

步骤2
将laravel项目(在开发机器上)中的laravel文件夹(在服务器主机-共享主机帐户上)中的public文件夹之外的所有内容都复制下来
您可以使用:
-C-panel:这将是最慢的选项
-FTP客户端:像FileZilla一样连接到您的共享主机帐户,并通过FTP上传传输您的文件和文件夹
-映射网络驱动器:您还可以在开发计算机上创建映射网络驱动器,以连接到共享主机帐户的根文件夹使用“ftp://your-domain-name“作为网络地址。

步骤3
打开laravel项目的公共文件夹(在开发机器上),复制所有内容并粘贴到public_html文件夹(在服务器主机-共享主机帐户上)。-plhd--0/>文件在public_html文件夹在共享主机帐户(在cboard编辑器或任何其他连接的编辑器)和:

更改:

require __DIR__.'/../bootstrap/autoload.php';   

致:

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

和改变:

$app = require_once __DIR__.'/../bootstrap/app.php';

致:

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

保存并关闭。

步骤5
现在转到laravel文件夹(在共享主机帐户-服务器上)并打开server。php文件
更改

require_once __DIR__.'/public/index.php';

致:

require_once __DIR__.'../public_html/index.php';  

保存并关闭。

步骤七

因为本地/开发服务器的. env文件被git忽略,它应该被忽略,因为它具有包括APP_KEY在内的所有环境变量,并且不应该通过将其推送到存储库而公开。您还可以看到. gitignore文件中提到了. env,因此它不会将其上传到存储库。

完成上述所有步骤后,制作一个。env文件,并添加从本地/开发服务器的中使用的所有环境变量。env文件到。生产服务器的env文件。

甚至有配置文件,如app.phpdatabase.php在laravel应用程序的配置文件夹中,默认情况下在env()的第二个参数中定义此变量,但不硬编码这些文件中的值,因为它将影响拉取存储库的用户的配置文件。所以建议手动创建. env文件!

另外,laravel给出了。env示例可以用作参考的文件。

就这样。

现在,当您访问配置为服务器域的url时,您的laravel应用程序应该与它在本地主机开发机器上的工作方式相同,而应用程序代码仍然是安全的,没有适当的文件权限的任何人都无法访问。

 类似资料:
  • 我的问题与另一个问题非常相似,但该线程中提供的解决方案对我没有帮助。 我使用本指南将我的Laravel应用部署到共享托管服务(顺便说一句,该指南与链接问题的答案之一非常相似) 下面是我的路线/web.php文件 问题是,我可以访问欢迎页面和登录页面。验证后,我转到主页,然后问题开始出现。我尝试之外的每一条路径(比如mydomain.net/law/search)都会让我以某种无限循环的方式再次访问

  • 我面临的问题,而上传我laravel项目到共享服务器,微软天蓝色。我不能访问除/以外的路线。我的路由文件有以下代码: 基本上,我使用php artisan make:auth生成登录注册默认功能。 我可以访问我的 /route: http://40.121.138.22/monrostudio/public/ 但不能访问其他路由,如/login、/register或我创建的任何其他路由。

  • 共享的托管环境常常会对目录结构以及配置文件有较多的限制。 然而,在大多数情况下,你仍可以通过少量的修改以在共享托管环境下运行 Yii 2.0。 部署一个基础应用模板 由于共享托管环境往往只有一个 webroot,如果可能,请优先使用基础项目模板( basic project template )构建你的应用程序。 参考 安装 Yii 章节在本地安装基础项目模板。 当你让应用程序在本地正常运行后,

  • 首先,我必须说,这个问题已经被问了几千次了。我使用以下工具创建了我的Laravel 5.5项目: 我没有给这个项目增加任何东西。项目在本地运行没有问题。当我想在共享托管网站上托管项目时,问题就来了(我正在使用infinityfree.net) Laravel 5.5的最低PHP版本:PHP 我的共享托管站点php版本:php版本7.0。19 我所做的唯一更改是: > 我复制了公共文件夹的内容到我的

  • 我正在用Laravel 5.7启动一个新项目。我用artisan制作了标准的laravel Auth。它在routes/web中注册了一个新路由。php是什么 问题是,当我将“/home”重命名为“/admin”时,它不起作用。它返回“未在此服务器上找到请求的资源/管理员”错误我可以将“/home”替换为除“/admin”之外的任何内容。其他任何东西都可以正常工作。“/admin”有什么问题,为什

  • 我有下面的场景。 我有一台带无线上网的笔记本电脑。我通过以太网电缆将我的笔记本电脑连接到网件路由器。我想让笔记本电脑无线上网与那些连接到路由器的人共享。有没有可能。