Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 自定义根文件夹的Laravel重定向问题_Php_Regex_Laravel_.htaccess_Laravel 5 - Fatal编程技术网

Php 自定义根文件夹的Laravel重定向问题

Php 自定义根文件夹的Laravel重定向问题,php,regex,laravel,.htaccess,laravel-5,Php,Regex,Laravel,.htaccess,Laravel 5,我的ISP不允许我的cpanel托管的laravel站点有一个自定义根文件夹,即laravel结构中的公用文件夹 这意味着我不能让服务器将/public\u html/public作为根目录。它必须始终是/public\u html 根据他们的指导,我设置了以下/public\u html/.htaccess规则,以使Laravel公用文件夹显示为根文件夹 RewriteEngine on RewriteCond %{HTTP_HOST} ^domain-name.com$ [NC,OR] Re

我的ISP不允许我的cpanel托管的laravel站点有一个自定义根文件夹,即laravel结构中的公用文件夹

这意味着我不能让服务器将/public\u html/public作为根目录。它必须始终是/public\u html

根据他们的指导,我设置了以下/public\u html/.htaccess规则,以使Laravel公用文件夹显示为根文件夹

RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain-name.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain-name.com$
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
这或多或少有效,但并不完全有效。问题是,如果我在我的站点上请求一个带有结尾反斜杠的页面,那么页面url将以

www.domain-name.com/public/contact-us

而不是我所期望的

www.domain-name.com/contact-us

我想这一定是.htaccess的一个问题,但我尝试了各种排列,无法解决它。也许我错了,也许这是一些最终需要通过url检查后的Laravel重定向来修复的问题


我快发疯了,我真的很感激你的任何想法

为了安全起见,将整个应用程序放在公共html文件夹中是一个很大的危险信号。你必须非常非常小心你在这个文件夹内的权限。默认情况下,像.env、.git、缓存文件、私人上传等东西通常是可以下载的,是的,黑客会扫描这些东西

如果您可以将整个应用程序上载到cpanel主机的根目录,并将public重命名为public_html,或者如果无法删除public,则将其内容复制到现有public_html

然后,您可能需要修改您的laravel app index.php以将其用作公共路径

在index.php下:

加:

有了它,标准.htaccess应该可以正常工作,而不需要进行任何更改

希望有帮助

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