2017-09-09 26 views
0

保護站點中的文件和文件夾的我在laravel開發了一個網站,但問題是,如果有人知道他可以直接訪問該網站的文件,我不希望文件的名稱怎麼寫的.htaccess和laravel

JobScholar 
    app 
    Exceptions 
    Http  
    Mail 
    Models 
    Permission.php  
    Providers -  
    Role.php  
    User.php 
.env 
    etc etc 

應用程序工作正常,但我想,如果用戶類型

http://localhost:8080/JobScholar/app/ 
or 
http://localhost:8080/JobScholar/User.php/ 

他應該rediret家庭控制器或看到錯誤消息

我的.htaccess

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
     Options -Indexes 
     ErrorDocument 403 http://localhost:8080/JobScholar/index 
     Options +FollowSymLinks 
    </IfModule> 


    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /JobScholar/$1 [L,R=301] 

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

    # Handle Authorization Header 
    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 

## Don't listing directory 
#Options -Indexes 
# 
## Follow symbolic links 
# 
# 
## Default handler 
#DirectoryIndex index.php 

我不希望用戶訪問文件或directory唯一的目錄和文件,他可以看到任何只有那些routes是定義

+0

如果只是你的應用程序的'公共/'目錄什麼是可訪問的,您的虛擬主機配置不正確。 https://laravel.com/docs/5.4/installation#configuration –

回答

0

Laravel基本流程是,所有的請求都通過index.php文件在public文件夾中。因此,您必須確保您的服務器將所有請求指向該文件夾,以便index.php可以提供並處理其餘的問題。

快速修復是創建vHost文件(假設您不在共享主機上)。 下面是一個示例:

<VirtualHost *:80> 
    ServerName www.site.com 
    ServerAlias site.com 

    ServerAdmin [email protected] 
    DocumentRoot /var/www/html/site_name/public 

    <Directory /var/www/html/site_name/public> 
     AllowOverride All 
    </Directory> 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

在Apache服務器將在去:

/etc/apache2/sites-available/ 

然後啓用該網站a2ensite site_name.conf

最後指向你的網站的服務器IP在/etc/hosts像這樣:127.0.0.45 site.com

也請務必使用a2enmod rewrite啓用mod重寫,以便由Laravel提供的可以對URL進行必要的重寫。

最後重啓apache:service apache2 restart