如何在php rootfolder中使用laravel运行子文件夹?

时间:2016-08-09 06:50:59

标签: php .htaccess routing laravel-5.1 url-routing

我有一个在php下运行的项目,但我有一个第三方子文件夹(下载文件夹),我想添加到当前项目中。

含义,根文件夹= testlaravel => www.testlaravel.com with sub folder = testlaravel / download => www.testlaravel.com/download

无论如何我能做到吗?

2 个答案:

答案 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;
    }
}