htaccess与Laravel共享主机

问题描述 投票:0回答:3

我需要你的帮助。我已经在共享主机上部署了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]

任何帮助,将不胜感激。

php laravel apache .htaccess shared-hosting
3个回答
0
投票

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

RewriteRule ^mywebsite/database - [F,L]

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

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

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


0
投票

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


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>
© www.soinside.com 2019 - 2024. All rights reserved.