以下相关配置都是在不同应用场景下进行的
一、微信公众号上原有商城项目WKT,例如都是通过 http://xxxx.wkt.zhixuerj.com 域名进行访问的,经过沟通发现客户基本上很少能用的起来,所以根据客户需求重新开发一套更适合用户场景的商城NeWKT,现在要求两个项目需要同时并存,除了某几个老客户,其他客户一律通过域名进入NeWKT。
Apache: 在WKT项目根目录 .htaccess文件中 hots1/hots2/hots3这几个域名除外,其他域名访问WKT一律跳转到NeWKT中,其中NeWKT项目域名配置和WKT一样,通过port区分
RewriteCond %{SERVER_NAME} !host1.wkt.zhixuerj.com
RewriteCond %{SERVER_NAME} !host2.wkt.zhixuerj.com
RewriteCond %{SERVER_NAME} !host3.wkt.zhixuerj.com
RewriteRule ^(.*)$ %{SERVER_NAME}://%{SERVER_NAME}:8081 [R=302,L]
二、静态资源如图片、视频、音频、文档等原是不同项目,不同上传接口,导致静态资源存放在不同项目中,公司项目升级后,多个项目都采用前后台分离,前端vue负责,后台phalapi接口负责,所有的静态资源都存放在CDN目录中。
1. 先建立CDN目录,将不同项目静态资源全部迁移到该目录下;
2. 项目根目录下.htaccess文件[apache]或 web.config文件[IIS]中配置
#图片
RewriteRule ^(Upload/Resource|PUBLIC/images|KPIupload)/(.+)\.(jpe?g|gif|png)$ cdn.php?cdnpath=$0 [NC]
#视频
RewriteRule ^(Upload/Resource)/(.+)\.(mp4|mov|rmvb)$ cdn.php?cdnpath=$0 [NC]
#音频
RewriteRule ^(Upload/Resource)/(.+)\.(wav|mp3)$ cdn.php?cdnpath=$0 [NC]
#字体
RewriteRule ^(Upload/Resource)/(.+)\.(ttf|woff|dfont)$ cdn.php?cdnpath=$0 [NC]
- 如上图配置,所有访问该项目的静态资源时, 都去访问该项目下的cdn.php文件,将静态资源传递给cdnpath这个参数,cdn.php文件中读取CDN目录中的该静态资源,这样就兼容了原始代码
注:IIS中需要将.htaccess文件规则导入,方能实现,这里记得选择重写,而不是重定向
参考资料:
.htaccess 详解
linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换
PHP 伪静态规则写法RewriteRule-htaccess详细语法使用