在 Apache 服务器和 webuzo 面板上删除 laravel 中的 /public

remove /public in laravel on Apache server and webuzo panel

我想删除 URL 中的 /public 我想使用虚拟主机而不是将 server.php 更改为 index.php。

我正在使用 webuzo 管理面板我将这行添加到 apache 配置文件 但它似乎不起作用 请帮帮我,我该怎么做

我的服务器是centOs 7,我的项目是laravel 5.8

<VirtualHost *:80>
ServerName uptodate.pnashr.pub

ServerAdmin webmaster@mawpro.me
DocumentRoot /home/uptodateadmin/public_html/public

<Directory /home/uptodateadmin/public_html/public>
    Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        Require all granted
    </Directory>
</VirtualHost>

我已经测试了您的 VirtualHost 配置,该代码没有问题。

您必须确保您的 public .htaccess 是 laravel 的默认设置并且没有被删除。每次我们添加新域或子域 Web 时,Webuzo 都会重新生成 VirtualHost 配置。因此,从 webuzo 管理面板设置文档根目录不会从 apache 配置文件手动更改。

Actually VirtualHost not change server.php to index.php but server.php located at parent directory and document root at subfolder public.

您可以创建 server.php 文件并包含“../server.php”;在该文件中

别忘了检查你的 .htaccess。只需使用来自 laravel

的默认 .htaccess
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    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_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

所以您想 laravel 轻松共享托管

在我的例子中创建一个任意名称的文件夹作为根目录

将除 public 文件夹之外的所有数据移动到根目录

现在将您的 public 文件夹重命名为 public_html

你的文件结构应该是这样的

现在打开 public_html/index.php 定义您的 bootstrap 和自动加载 页面应如下所示,或者您可以从此处复制所有代码

<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylor@laravel.com>
 */

define('LARAVEL_START', microtime(true));



require __DIR__.'/../root/vendor/autoload.php';



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

// set the public path to this directory
$app->bind('path.public', function() {
    return __DIR__;
});


$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

就是这样,现在您的 public_html 对用户来说是 public 根文件应该在后面,因为这个文件不应该暴露给 public

在 Webuzo 中,您可以更改文档根目录:

/usr/local/apps/apache/etc/conf.d/webuzoVH.conf