我有一个在php下运行的项目,但我有一个第三方子文件夹(下载文件夹),我想添加到当前项目中。
含义,根文件夹= testlaravel => www.testlaravel.com with sub folder = testlaravel / download => www.testlaravel.com/download
无论如何我能做到吗?
答案 0 :(得分:0)
您使用的是Apache还是Nginx?如果是Apache,则需要配置vhost文件以从子文件夹中提供Laravel。特别是,您需要配置在请求testlaravel.com/download
URI时,应使用/home/testlaravel/download/public
目录(基本上不同的根/本地位置)来提供它。
您还需要使用mod_rewrite
重写您对来自上述位置的index.php
提供的子文件夹的URL请求(以及美化网址)。
同样,您在主网站的vhost中的配置也会有所不同(因此将有2个配置,一个用于您的主网站,一个用于laravel请求)
以上应该可以很好地工作,因为它在Nginx中完成相同的方式,为此我已经包含了一个完整的示例,说明其conf文件应该是什么样的
以下是我如何设置我的location
块,这对我来说非常有用:
location ^~ /facebookschedule {
alias /home/netcans/facebookschedule/public;
try_files $uri $uri/ @foobar;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/wwww/facebookschedule/public/index.php;
}
}
location @foobar {
rewrite /facebookschedule/(.*)$ /facebookschedule/index.php?/$1 last;
}
来源:http://shubhank.gaur.io/setup-laravel-5-in-subfolder-with-nginx/
答案 1 :(得分:0)
我使用以下配置,这比大多数其他已发布的解决方案简单,并且不需要对任何路径/文件夹进行硬编码。
我们只使用public/
为所有请求添加前缀,然后将其从SCRIPT_NAME
中删除,以便应用程序可以正确自动检测其环境。
location ~ /myproject/(.*) {
rewrite /myproject(.*) /myproject/public/$1 break;
try_files $uri /myproject/public/index.php$is_args$args;
location ~ /index\.php$ {
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_NAME /myproject/index.php;
}
}