首页 > 解决方案 > 在 Apache 服务器和 webuzo 面板上的 laravel 中删除 /public

问题描述

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

我正在使用 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>

标签: laravelapachecentos7

解决方案


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

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

实际上,VirtualHost 不会将 server.php 更改为 index.php,而是将 server.php 更改为位于父目录和子文件夹 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>

推荐阅读