Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么是/“公众”;仍然在URL中?_Php_Laravel_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php 为什么是/“公众”;仍然在URL中?

Php 为什么是/“公众”;仍然在URL中?,php,laravel,apache,.htaccess,mod-rewrite,Php,Laravel,Apache,.htaccess,Mod Rewrite,我的文件夹结构如下: .cpanel/ public_html/ public_ftp/ .. 公共html目录中的laravel项目如下所示: app/ bootstrap/ public/ vendor/ composer.json artisan .. 问题是,当我输入像www.example.com这样的url时,它会重定向到www.example.com/public。 我找到了一条重写规则,允许我在www.example.com中输入,它只显示public/index.ph

我的文件夹结构如下:

.cpanel/ 
public_html/ 
public_ftp/ 
..
公共html目录中的laravel项目如下所示:

app/
bootstrap/
public/
vendor/
composer.json
artisan
..
问题是,当我输入像www.example.com这样的url时,它会重定向到www.example.com/public。 我找到了一条重写规则,允许我在www.example.com中输入,它只显示
public/index.php
,而不显示“/public”部分:

它对索引页面有效,但当我尝试转到任何路由时,“/public”会显示在URL中

为什么此重写规则适用于索引页而不适用于任何路由?对于要从URL中删除“/public”的所有页面,什么重写规则将起作用?

这应该起作用:

  • 将Laravel根目录中的server.php文件重命名为index.php
  • 将.htaccess文件从/public目录复制到Laravel根目录

  • 在本地环境中,将public重命名为public\u html

    将项目复制到父文件夹中,使laravel公用文件夹现在成为公用文件夹

    .cpanel/
    应用程序/
    引导/
    卖主/
    composer.json
    工匠
    公共网页(http:/)
    公共图书馆
    ..
    


    不要试图用.htaccess伪造它,因为你会将.env文件暴露在服务器根文件夹中。如果您这样做,这将是一个很大的安全问题。

    您不能在
    public\u html
    目录中有一个Laravel项目。例如,任何人都可以通过这种方式下载您的.env文件。
     RewriteEngine on 
     RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
     RewriteCond %{REQUEST_URI} !^/subfolder/ 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteCond %{REQUEST_FILENAME} !-d 
     RewriteRule ^(.*)$ /subfolder/$1 
     RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
     RewriteRule ^(/)?$ subfolder/index.php [L]