htaccess与Laravel共享主机

时间:2018-02-22 23:21:08

标签: php laravel apache .htaccess shared-hosting

我需要你的帮助。我已经在共享主机上部署了Laravel应用程序,并且我添加了htaccess文件,以便将所有流量重定向到公共目录。目录结构如下:

public_html
|
-------my_website
|
-------.htaccess

我知道,我不应该这样做,正确的方法是将Laravel的公共目录内容放在public_html中,其余的Laravel应用程序应该在它之外,但在这种情况下,我无法做到这一点,因为一些原因(不是代码相关)。现在我遇到了一个问题,因为任何人都可以通过点击直接网址来访问网站的敏感部分,例如:

http://mywebsite.com/my_website/database/database.sqlite

我没有关于htaccess的广泛知识,并且花了很多时间搜索如何保护敏感文件,但我无法完成此任务。我的htaccess文件目前看起来像这样:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?mywebsite.com$

RewriteCond %{REQUEST_URI} !^/mywebsite/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /mywebsite/public/$1
RewriteCond %{HTTP_HOST} ^(www.)?mywebsite.com$
RewriteRule ^(/)?$ mywebsite/public/index.php [L]
RewriteRule ^/?$ "https\:\/\/www\.mywebsite\.com" [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule .* https://mywebsite.com%{REQUEST_URI} [R,L]

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

This repo on github,是关于如何在共享主机上部署laravel的好教程

答案 1 :(得分:0)

举个例子,因为你显示了一个sqlite文件的链接,请考虑这个:

RewriteRule ^mywebsite/database - [F,L]

这将保留对该sqlite文件的HTTP请求。您还可以添加其他目录,因此如果您还想保护目录foo,则:

RewriteRule ^mywebsite/(database|foo) - [F,L]

这是保护在Apache上运行的PHP应用程序目录的一种非常常见的技术

答案 2 :(得分:0)

在共享主机上与我合作,并从公共文件夹启动项目

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

<Files .env>
Order allow,deny
Deny from all
</Files>