Laravel 5:如何避免公用文件夹,尝试从localhost中的root打开

时间:2016-06-24 05:54:22

标签: php laravel laravel-5

我遵循以下结构,因为我不想向公众公开我的代码。

我的localhost中的文件夹结构是

tbt
    tbt/user/
    tbt/public_html/

其中user包含root的所有文件夹,没有公用文件夹,public_html包含公共文件。

我在public_html / index.php中更改了以下几行:

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

但是当我运行应用程序时,

我得到的网址类似于localhost/tbt/user/xxxx,但它应该是localhost/tbt/xxx

我已按照此solution解决问题,但无法解决问题,因为我的应用程序在Laravel 5上。有人可以帮我找到解决方案吗?

3 个答案:

答案 0 :(得分:1)

流程1

  1. 将Laravel根文件夹中的server.php重命名为index.php
  2. 将.htaccess文件从/ public目录复制到Laravel根文件夹。
  3. 流程2

    1. 按照流程1

    2. 更新.htaccess,如下所示

    3. .htaccess如下所示

      RewriteEngine On
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)/$ /$1 [L,R=301]
      
      RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ index.php [L]
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_URI} !^/public/
      RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
      

答案 1 :(得分:1)

您可以在Web服务器中设置别名,指向公用文件夹。这很简单但对我有用

https://httpd.apache.org/docs/2.4/urlmapping.html

答案 2 :(得分:0)

在你的 Laravel 项目的根目录中创建一个名为 .htacess 的文件并将这段代码粘贴到其中

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php