提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
想要对已有的项目做二次开发,又不想在已有项目的基础上继续写,这不仅要熟悉已有代码,还得熟悉对方的业务逻辑。因为基本上是开发新的页面,那何不直接新建一个项目整合到一起呢?
于是就有了标题所述的需求。
对于一个刚接触php一周多的人而言,这是我目前所能想到的解决方案。基于在网上都找不到全面的答案,是不是有更好的替代方案呢?还是说这是常识?(萌新瑟瑟发抖)希望路过的大佬不吝赐教。
一、Apache方案
主要修改两个地方,首先是在虚拟主机的配置文件中,为laravel项目增加一个别名。
然后是修改主项目下的.htaccess文件,添加如下配置。
马赛克的部分即上一步中自己设定的路径别名。
代码如下:
Alias /member xxx/xxx/xxx/xxx/public
<Directory xxx/xxx/xxx/xxx/public>
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.php index.html
</Directory>
#.htaccess文件
<IfModule mod_rewrite.c>
#Options -MultiViews
RewriteEngine On
#重写规则基于别名目录,而不是根目录
RewriteBase /abc/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /abc/index.php?/$1 [L]
</IfModule>
二、nginx方案
直接修改nginx的配置文件:
试了许多种location的配置方式,只有以上是成功跑通的。以下是源码,因为服务器使用的宝塔,所以以下是宝塔上的具体修改内容。
#PHP-INFO-START PHP引用配置,可以注释或修改,默认是没有注释的,但要运行laravel,所以要注释的
#include enable-php-73.conf;
#PHP-INFO-END
#因为注释掉了include enable-php-73.conf,所以要增加以下两个location,确保nginx 将php文件传递给PHP-FPM处理。
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/tmp/php-cgi-73.sock;
}
#以下是设置路径别名,使得在主项目下运行laravel子项目
location /abc {
alias /www/xxx/xxx/xxx/public;
try_files $uri $uri/ @abc;
location ~ \.php$ {
include fastcgi.conf;
fastcgi_pass unix:/tmp/php-cgi-73.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /www/xxx/xxx/xxx/public/index.php;
}
}
location @abc {
rewrite /abc/(.*)$ /abc/index.php?/$1 last;
}