【问题标题】:how to write .htaccess and protect sites files and folder in laravel如何在 laravel 中编写 .htaccess 并保护站点文件和文件夹
【发布时间】:2017-09-09 20:38:12
【问题描述】:

我在 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/

他应该重定向到家庭控制器或看到错误消息

我的 .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 的目录和文件

【问题讨论】:

标签: php laravel .htaccess


【解决方案1】:

Laravel 的基本流程是所有请求都通过public 文件夹中的index.php 文件。因此,您必须确保您的服务器将所有请求都指向该文件夹,以便 index.php 可以提供服务并处理其余部分。

快速解决方法是创建 vHost 文件(假设您不在共享主机上)。 这是一个示例:

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

    ServerAdmin webmaster@localhost
    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

最后将您的站点指向/etc/hosts 中的服务器 IP,如下所示:127.0.0.45 site.com

还要确保使用 a2enmod rewrite 启用 mod 重写,以便 Laravel 提供的 .htaccess 可以对 URL 进行必要的重写。

最后重启apache:service apache2 restart

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2013-10-15
    相关资源
    最近更新 更多