【问题标题】:Laravel redirect issue for custom root folder自定义根文件夹的 Laravel 重定向问题
【发布时间】:2020-01-16 20:27:40
【问题描述】:

我的 ISP 不允许我的 cpanel 托管 laravel 站点拥有自定义根文件夹(Laravel 结构中的公用文件夹)。

这意味着我无法让服务器将 /public_html/public 视为根。它必须始终是 /public_html

按照他们的指导,我设置了以下 /public_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 重定向来修复。

这让我发疯了,我真的很感激任何想法!

【问题讨论】:

    标签: php regex laravel .htaccess laravel-5


    【解决方案1】:

    出于安全目的,将整个应用程序放在 public_html 文件夹中是一个很大的危险信号。您必须非常小心您在此文件夹中的权限。默认情况下,.env、.git、缓存文件、私人上传等内容通常是可下载的,是的,黑客会扫描零食。

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

    那么您可能需要修改您的 laravel 应用 index.php 以将其用作公共路径。

    index.php下:

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

    添加:

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

    有了这个标准 .htaccess 应该可以正常工作而无需更改。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 2014-12-09
      • 2017-08-02
      • 2015-07-13
      • 2018-05-08
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多