【问题标题】:Removing /public from URL in Laravel 7从 Laravel 7 中的 URL 中删除 /public
【发布时间】:2020-10-09 12:35:49
【问题描述】:

尽管有数百个类似的问题,但没有一个能真正解决我的问题。 我已经设置了一个 Laravel 7.14.1 应用程序,并将其上传到共享主机。

为了让它在共享主机上工作,我做了以下步骤:

1- 将 server.php 重命名为 index.php

2- 将 .htaccess 移至根目录

3- 在 .htaccess 中我放了以下规则

RewriteEngine On

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

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

# Handle Front Controller...
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]

4- 创建如下测试路线:

Route::get('/test', function () {
    return 'HI';
});

现在当我访问 domain.com/test 时,它给了我 404 错误 但是当我访问 doamin.com/public/test 时,它可以工作

如何从我的网址中删除 /public 部分?

【问题讨论】:

  • 您必须确保“公共”文件夹是主目录。如果您使用的是 lamp 或 xxamp 或 wamp。
  • 是共享主机,怎么办?
  • 在这种情况下,您必须将您的 laravel 应用程序上传到您的共享主机 public_html 文件夹上方,并且公共文件夹的包含保留到 public_html
  • 恐怕我做不到。我有特定的结构。
  • 首先将项目上传到主根目录,然后将public文件夹移动到public_html..并更改服务提供商注册方法以从public_html读取数据

标签: laravel .htaccess routes


【解决方案1】:

您可以按照以下步骤在共享主机(cpanel)上托管您的 laravel 应用程序

1 步:登录到您的共享主机帐户(cpanel)仪表板,然后找到文件管理器图标,然后单击它

点击 public_html ,其实这是我们通常上传web应用内容的地方,所以在这里上传你的laravel项目但是我们需要做提取工作以使我们的项目运行,请继续以下步骤

2。步骤: 组织你的 laravel 项目

在您的 laravel 项目的主根目录中创建文件夹,任何名称都适合,我称之为 system,如下所示

然后我将除公共之外的所有其他文件夹移动到这个新创建的文件夹。

在这里你会得到结果

将您的所有 public 内容置于主根目录之外,如下所示

那么结果是什么

您可以删除或保留公用文件夹

3 步:编辑在你的主根目录中找到的 index.php 文件

我们需要将第22行和第36行代码编辑为如下所示

注意:背后的秘密是告诉我们的 index.php 文件在哪里可以找到这两个文件

您可以通过导航到您的域来测试您的项目。

4.步骤:结论,

有一个有趣的包总结了我们作为 laravel 包所做的所有事情,请看一下,click here

【讨论】:

    【解决方案2】:

    共享主机最简单、最安全的解决方案:

    1. 从 SSH 转到您的 Laravel/Lumen 根路径
    2. 运行mv .htaccess .htaccess-BACKUP 备份您当前的.htaccess
    3. 运行cp public/index.php ./ && cp public/.htaccess ./
    4. 享受:)

    注意:如果您没有 SSH 访问权限,您可以从 cPanel > 文件管理器手动执行完全相同的操作

    【讨论】:

      【解决方案3】:

      解决这个问题的简单方法。

      1. 首先,将本地机器上public文件夹的内容上传到web服务器上的public_html。
      2. 上传 public_html 之外的所有其他文件和文件夹。
      3. 完成,无需更新配置文件。

      告诉我进展如何

      【讨论】:

        猜你喜欢
        • 2016-07-30
        • 2020-06-07
        • 2015-11-17
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 2021-06-04
        • 2016-03-06
        相关资源
        最近更新 更多