Laravel在public
目录中有HTML文件。因此,如果我使用git
将源代码推送到我的网站,我必须通过http://example.com/public
访问该网站。但我不想要这个。
因此,我将Laravel Source包含在名为laravel
的子目录中,并在站点根目录下创建了一个.htaccess
文件,其中包含以下代码:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /laravel
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)$ public/$1 [L]
</IfModule>
因此,对root的任何请求都将转发到public
目录中的laravel
目录。
可行,但任何人都可以通过转到laravel
http://example.com/laravel
目录
我不希望他们访问laravel
目录。那么,如何使用子目录安装来阻止访问laravel
目录?
我已尝试在deny from all
目录的.htaccess
文件中添加laravel
,但它也可以禁止访问根网站。
当前目录树:
my-site-dir
|- .git
|- .gitignore
|- .htaccess
|- laravel
|- app
|- bootstrap
|- public
|- vendor
|- and rest of Laravel Files
答案 0 :(得分:0)
经过一番搜索,我找到了解决方案。阻止 HTTP请求到laravel
目录。
在.htaccess
子目录中创建laravel
文件,并将以下代码放入其中:
RewriteEngine on
RewriteRule $ - [F]
当发送对laravel目录(包括索引)文件的任何直接请求时,上述规则将显示 403 Forbidden Error ,但不会影响mod_rewrite
的{{1}}规则根目录的.htaccess
文件。
答案 1 :(得分:0)
您只需要更改DocumentRoot / root。
让它指向laravel的公共文件夹,例如:
服务器{
root / var / www / laravel / public /;
index index.php index.html index.htm;server_name your.name; location / { try_files $uri $uri/ /index.php$is_args$args; } # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
}