我正试图为我的一个用户在web根目录的子文件夹中安装一个Laravel 4应用程序。我知道通过网络访问整个框架存在重大的安全问题。我计划在了解如何实现这一点后,单独解决这些问题。
我已经尝试了我能想到的Apache别名和重写规则的每一种组合,但似乎都不起作用。这是我的目录结构:
/home/username/public_html
.htaccess
my_laravel_app/
app/
bootstrap/
public/
.htaccess
index.php
robots.txt
...etc (standard Laravel 4 public folder contents)
vendor/
...etc (standard Laravel 4 files and folders)
第一个.htaccess
文件,即直接列在用户public_html
目录下的文件,包含以下内容:
AuthType Basic
AuthName Private
Authuserfile /path/to/.htpasswd
Require valid-user
第二个.htaccess
是一个标准的Laravel 4 .htaccess
文件。它包含以下内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
我想从本质上把这个my_laravel_app/public
目录当作一个webroot,这样Laravel应用程序的功能就和直接在域上安装普通Laravel一样了。
我相信我只需要编辑第一个.htaccess文件,以包含将任何请求发送到/my_laravel_app
到my_laravel_app/public
的重写规则,但我似乎无法实现这一点。有人能帮忙吗?
根据您的设置,这可能会有所不同,但基本配置是:
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/my_laravel_app/public/%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/my_laravel_app/public/%{REQUEST_URI} -f
RewriteRule . public/%{REQUEST_URI} [L]
RewriteRule . public/index.php [L]
并将其作为.htaccess放入my_laravel_app中,以限制条件的复杂性。希望你能明白。