将文档根目录设置为/ public

时间:2015-07-22 02:46:06

标签: php apache .htaccess laravel laravel-5

我刚刚开始在一个新项目中使用Laravel而且遇到了问题。

所以,我认为我已经为一个新项目做好了一切准备并开始研究它。在我的本地机器(Windows,运行WAMP)上一切都很好,我已经在个人VPS(Ubuntu,运行NGINX)上进行设置,这也很好。现在,我的雇主正在使用共享主机,而且访问权限非常有限。我有ftp访问权限,他可以访问cPanel上的一些东西。我已经尝试使用PhpStorm直接从我的本地项目部署到服务器。它似乎没问题,只是它是指向文件列表,但访问serverlink / public时似乎没问题。我已经要求我的雇主将文档根目录更改为/ public,并且一切都进入了下滑状态,因为我现在无法访问公共资源(css / images)。生成的链接是他们应该的例子:例如:serverlink / css / mycss.css,但文件返回404,这是相当奇怪的。

这是我的htaccess:

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

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

在我的观点中,我使用刀片引用资产,如下所示:

<link href="{{ asset('css/button.css') }}" rel="stylesheet" type="text/css" >

尝试直接在浏览器中访问文件时得到的是

&#34;抱歉,找不到您要查找的页面。 RouteCollection.php第145行中的1/1 NotFoundHttpException:&#34;

任何人都可以帮助我吗?坚持这个,特别是因为它在我的vps上工作正常!我是否需要放弃Laravel 5,因为托管限制还是可以绕过它们?

干杯, 蒂亚戈C.

2 个答案:

答案 0 :(得分:0)

添加此行index.php

 $app->bind('path.public', function() {
    return __DIR__;
});

将公共目录更改为主目录。

答案 1 :(得分:0)

事实证明,根目录上的.htaccess需要进行身份验证。不知何故,我想当根文件夹设置为public时,其他.htaccess阻止访问文件(因为没有询问auth)。我自编辑后将我的.htaccess(公开内部)改为:

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

    RewriteEngine On
RewriteBase /public

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]
</IfModule>

这也消除了&#34; index.php /&#34;或者类似于我的路线。

干杯!