簡體   English   中英

與Laravel共享主機上的htaccess

[英]htaccess with Laravel on shared hosting

我需要你的幫助。 我已經在共享主機上部署了Laravel應用程序,並且添加了htaccess文件以將所有流量重定向到公共目錄。 目錄的結構如下:

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

我知道,我不應該這樣做,正確的方法是將Laravel的public dir內容放在public_html中,而Laravel應用程序的其余部分應該不在此范圍內,但是由於某些原因,在這種情況下,我無法這樣做(與代碼無關)。 現在,我遇到了一個問題,因為任何人都可以通過訪問直接URL來訪問網站的敏感部分,例如:

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]

任何幫助,將不勝感激。

github上的這個倉庫是一個很好的教程,介紹了如何在共享主機上部署laravel

僅作為示例,因為您顯示了指向sqlite文件的鏈接,所以請考慮以下幾點:

RewriteRule ^mywebsite/database - [F,L]

這樣可以防止對該sqlite文件的HTTP請求。 您還可以在其中添加其他目錄,因此,如果您還想保護目錄foo,則:

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

這是保護在Apache上運行的PHP應用程序目錄的一種非常常用的技術

在共享主機上與我一起工作,並從公用文件夾啟動項目

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM