我正在尝试将多个Laravel 4项目上传到我的Web服务器,而不是我的开发服务器。每个laravel 4应用程序都位于自己的子目录中。我的文件结构应该如何?我一直在寻找一个htaccess来从网址中删除/ public,但我没有成功。此服务器仅用于测试目的,它允许其他人在构建项目时遵循。我知道将laravel基础结构留在这些目录中是主要的安全问题,但它们仅用于测试目的,当项目完成时,它们被移除并放置在自己的托管服务器上。这是我的文件结构:
-public_html/
main website html files
-Test Site Subdirectory Folder
-subdirectoryFolder
-Store/
-laravel app 1
-blog/
-laravel app 2
-newspaper
-laravel app 3
如果我在每个子目录文件夹(www.testsite.com/Store
,www.testsite.com/blog
,www.testsite.com/newspaper
)中安装laravel应用程序,则每个应用程序都可以正常工作,但是我试图在网址末尾删除公众, www.testsite.com/Store/public
是浏览器中显示的内容。非常感谢任何有关此问题的帮助。谢谢。
答案 0 :(得分:11)
看起来我的开发结构正是你想要做的。所以我有这个文件夹结构:
var
|-- www
|-- Store
| |-- app
| |-- bootstrap
| |-- ...
|-- blog
|-- app
|-- bootstrap
|-- ...
这是我的VirtualHost文件/var/www/Store/vhost.conf
:
Alias /Store "/var/www/Store/public"
<Directory /var/www/Store>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig FileInfo Indexes
Order allow,deny
Allow from all
</Directory>
是的,我把它放在我的项目文件夹中并在/etc/apache2/apache2.conf中添加了一个include:
Include /var/www/Store/vhost.conf
这是我的.htaccess文件:
<IfModule mod_rewrite.c>
#Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]
</IfModule>
我只需要点击
http://server.dev/Store
或
http://[ipaddress]/Store
要看到它。
我已经构建了一个小脚本来为我完成所有这些:https://github.com/antonioribeiro/laravel-installer。它可以在我需要的任何文件夹中下载,安装,配置和启动Laravel应用程序,并执行任何必要的操作。兼容基于Debian的发行版,如Ubuntu。
修改
请注意,有两件事会从您的网址中移除/public
和/index.php
:
1)/ Store直接指向您的公共文件夹:
Alias /Store "/var/www/Store/public"
2)以及重写规则,以保持您的网址与index.php
:
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]
答案 1 :(得分:3)
将每个公共目录中的所有内容index.php
分别移至Store,Blog和Newspaper。并更改以下行:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
到
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';
祝你好运。
编辑:抱歉。您还必须修改/bootstrap/paths.php
,然后更改
'public' => __DIR__.'/../public',
到
'public' => __DIR__.'/../',