首页 > 解决方案 > 从 Laravel 7 中的 URL 中删除 /public

问题描述

尽管有数百个类似的问题,但没有一个真正解决我的问题。我已经设置了一个 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 部分?

标签: laravel.htaccessroutes

解决方案


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

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

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


推荐阅读