删除' public'之后的注意事项来自Laravel 5中的URL

时间:2016-02-01 09:25:50

标签: php laravel laravel-5.1

我试图找到一个解决方案来移除公众'来自laravel 5应用程序中的url。 (localhost / laravelapp / public)

This SO answer非常有用,但由于我使用了资产助手,因此无法找到用于上传文档的css,js和自定义文件夹。所以我不得不尝试不同的答案来找到适合我的那个。虽然有些答案表明删除公用文件夹并不好,但其他人建议重新命名而不是删除它。

我只是想知道是否有任何危险,或者在删除公众时是否遗漏了任何内容。根据我在SO中找到的答案的文件夹。 这就是我做的事情

就像KA_lin的建议一样

将server.php重命名为index.php(无修改)

将.htaccess从public复制到root

将.htaccess更改为以下

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

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]

</IfModule>

现在,css和js文件没有正确加载,根据Sean Perkins的回答,我打开了vendor / laravel / framework / src / Illuminate / Routing / UrlGenerator.php并更改了

public function asset($path, $secure = null)
{
    if ($this->isValidUrl($path)) {
        return $path;
    }

    $root = $this->getRootUrl($this->getScheme($secure));
    return $this->removeIndex($root).'/'.trim($path, '/');
}

public function asset($path, $secure = null)
{
    if ($this->isValidUrl($path)) {
        return $path;
    }

    $root = $this->getRootUrl($this->getScheme($secure));
    return $this->removeIndex($root).'/public/'.trim($path, '/');
}

现在一切似乎都运转良好。

之后,我还在.htaccess中添加了以下行,因为当我请求localhost / laravelapp / .env时正在查看.env文件

RewriteRule ^.env - [F,L,NC] 

现在一切都准备就绪,但我想知道在将网站上传到实时服务器之前是否还有其他预防措施。

我还注意到当我导航到localhost / laravelapp / public时,网站将加载没有css或js的所有内容。 我应该担心吗。

我也没有删除公用文件夹中的.htaccess。我假设它不是问题,因为我在根文件夹中有一个新问题。是否可以删除它。

0 个答案:

没有答案