use*_*994 5 php .htaccess subdirectory laravel-4
我正在尝试将多个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
Run Code Online (Sandbox Code Playgroud)
如果我在每个子目录文件夹(www.testsite.com/Store,)中安装laravel应用程序www.testsite.com/blog,www.testsite.com/newspaper每个应用程序都可以工作,但是我试图删除网址末尾的公共,www.testsite.com/Store/public是浏览器中显示的内容.非常感谢任何有关此问题的帮助.谢谢.
Ant*_*iro 11
看起来我的开发结构正是你想要做的.所以我有这个文件夹结构:
var
|-- www
|-- Store
| |-- app
| |-- bootstrap
| |-- ...
|-- blog
|-- app
|-- bootstrap
|-- ...
Run Code Online (Sandbox Code Playgroud)
这是我的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>
Run Code Online (Sandbox Code Playgroud)
是的,我将它放在我的项目文件夹中并在/etc/apache2/apache2.conf中添加一个include:
Include /var/www/Store/vhost.conf
Run Code Online (Sandbox Code Playgroud)
这是我的.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>
Run Code Online (Sandbox Code Playgroud)
我只需要击中
http://server.dev/Store
Run Code Online (Sandbox Code Playgroud)
要么
http://[ipaddress]/Store
Run Code Online (Sandbox Code Playgroud)
看见了.
我已经构建了一个小脚本来为我做这一切:https://github.com/antonioribeiro/laravel-installer.它可以在我需要的任何文件夹中下载,安装,配置和启动Laravel应用程序,执行必要的操作.兼容基于Debian的发行版,如Ubuntu.
编辑
请注意,有两件事会从您的网址中删除/public和/index.php:
1)/ Store直接指向您的公用文件夹:
Alias /Store "/var/www/Store/public"
Run Code Online (Sandbox Code Playgroud)
2)和重写规则,以保持您的网址清除index.php:
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]
Run Code Online (Sandbox Code Playgroud)
将每个公共目录中包含的所有内容index.php分别移动到商店、博客和报纸。并更改以下行:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)
到
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)
祝你好运。
编辑:抱歉。/bootstrap/paths.php您还必须编辑、更改
'public' => __DIR__.'/../public',
Run Code Online (Sandbox Code Playgroud)
到
'public' => __DIR__.'/../',
Run Code Online (Sandbox Code Playgroud)