【问题标题】:Remove public from URL Laravel 5.3从 URL Laravel 5.3 中删除公共
【发布时间】:2017-02-27 05:24:01
【问题描述】:

我使用的是 Laravel 5.3,有没有一种简单的方法可以从 URL 中删除 public?是否有必要添加一个htacces。当我更改 htacces 时,会出现如下错误,

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    将 htaccess 和 index.php 文件从 public 文件夹复制到根目录,然后更改根 index.php 代码如下

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

    【讨论】:

    • 风险太大。它使您的 composer.json、.env 和其他敏感信息可以通过浏览器访问。最佳做法是将 vhost 设置为 /public。
    • @MahfuzulAlam。感谢您在评论中通知
    • 对不起,我不得不说。这是一个非常糟糕的建议,因为如果你这样做,你会在开发过程中发现很多错误,并且整个应用程序代码都会对网络开放。
    • @AlexeyMezenin。我希望他使用的是本地主机,否则他会将域指向公共文件夹 itslef
    【解决方案2】:

    安装 Laravel 后,你应该将你的 web 服务器的文档/web 根目录配置为公共目录。该目录中的 index.php 充当所有进入应用程序的 HTTP 请求的前端控制器。

    https://laravel.com/docs/5.3/installation#configuration

    不要编辑 .htaccess 或 Laravel 相关文件,只编辑 point web server to a public directory instead of Laravel project directory

    DocumentRoot "/path_to_laravel_project/public"
    <Directory "/path_to_laravel_project/public">
    

    然后重新启动 Apache。

    【讨论】:

    • 这是正确的方法,但 Windows 7 上的最新 XAMPP(32 位)不能很好地播放。因此,我的团队正在实施上面给出的已接受答案。
    【解决方案3】:

    在根目录中添加一个.htaccess 文件,其中包含 -

    RewriteEngine On
        RewriteRule ^(.*)$ public/$1 [L]
    

    【讨论】:

      【解决方案4】:

      是的,很简单,不需要添加额外的htaccess,

      1. 在您的 laravel 项目文件夹中创建一个新文件夹。
      2. 随意命名。示例:- 来源

      1. 将所有文件从根目录移至“源”文件夹,“公共”文件夹除外。

      4 。将公用文件夹中的所有文件移至根目录。

      5 .更改 autoload.php 路径

      6 .就这样。如有必要,删除公用文件夹。

      【讨论】:

        【解决方案5】:

        在根目录下创建一个.htaccess文件并将以下内容放入 它

        <IfModule mod_rewrite.c>
           RewriteEngine On 
           RewriteRule ^(.*)$ public/$1 [L]
        </IfModule>
        

        【讨论】:

          【解决方案6】:

          即使上面的解决方案也适合您,但我建议不要这样做。 原因如下。
          - 您应该将 Apache 主机根目录指向 $LARAVEL_PATH/public 目录,而不是 $LARAVEL_PATH。
          - 你必须为用户配置 apache 不能访问 .env、git 文件、配置文件夹的文件
          公共目录的存在是为了使项目更加安全。解决实际问题,不要试图破坏这个简单但很好的安全附加。

          【讨论】:

            【解决方案7】:

            将公用文件夹中的所有文件和文件夹复制到根文件夹并将您的.htaccess文件编辑为

             <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php/$1 [L]
            </IfModule> 
            

            并且不要忘记更改 index.php 文件中的路径。 详情参考以下链接

            Installing Laravel in a subfolder

            https://ellislab.com/forums/archive/viewthread/151342/#734511

            【讨论】:

              猜你喜欢
              • 2017-06-28
              • 2015-06-09
              • 2016-06-09
              • 2019-03-30
              • 2013-03-13
              • 2015-04-06
              • 2021-08-08
              • 1970-01-01
              相关资源
              最近更新 更多