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”的所有页面,什么重写规则将起作用?这应该起作用:
在本地环境中,将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]