使用wordpress 给网站同域名下基于目录搭建博客 www.xxx.com/blog/
电商等网站往往需要一个博客类的系统写一些科普或问答来给维护客户以及做SEO引流,做博客当然首选wordpress,搭建即可用,还可以让业务自己选择各种模板和管理,大大节省技术成本和时间。
如果希望让博客来做seo引流,那最好不要用二级域名,用主域名的目录来做效果最好。
需求看起来简单,但是wp代码会有重定向和https判断,经实践,把具体步骤写下来,方便有需要的人,也方便自己以后查阅
一、下载和安装 wordpress
已经有官方的文档,而且不复杂,就直接放链接了,建议使用nginx+mysql安装,这样方便调试
https://codex.wordpress.org/zh-cn:%E5%AE%89%E8%A3%85_WordPress
我本地主站域名取 www.kw.com, 博客配置独立域名 blog.kw.com 和 www.kw.com
二、主站配置转发 www.xxx.com/blog/* 请求
在主站配置Nginx代理转发 www.xxx.com/blog/* 这样路径的请求到wordpress的服务器上 www.kw.com上(wordpress是开源的,被入侵的风险要比较高,建议不要和主业务放在同一台服务器)
把以下这代码加到网站的nginx站点配置上
location ~ /blog/(.*) { proxy_redirect off; proxy_set_header Host www.kw.com proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; set $indexfile 'https://127.0.0.1/$1?$args'; #如果主站没有使用https 则改为http://127.0.0.1/$1?$args 。关键点在于博客的和主站需要同时使用ssl或同时不使用。127.0.0.1 是博客的服务器ip,只能基于ip转发,不能填域名
proxy_pass $indexfile; }
三、blog nginx配置
server { listen 80 ; listen [::]:80 ;
#https配置开始,如果主站不是使用https 链接则把下面红色部分去掉 , listen 443 ssl; server_name blog.xxx.com www.kw.com; ssl_certificate /etc/nginx/ssl/kw_com.crt; ssl_certificate_key /etc/nginx/ssl/kw_com.key; #https配置结束 root /var/www/vhosts/blog; index index.html index.htm index.php;
location / {#这块主要是为了识别伪静态博客链接
# index index.html index.php;
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
location ~ \.php$ { #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini include fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; } include /etc/nginx/default.d/*.conf; }
四、修改wordpress wp_config.php,增加以下代码
$siteUrl = $_SERVER['HTTP_HOST']=='www.kw.com'? $_SERVER['HTTP_HOST'].'/blog':$_SERVER['HTTP_HOST']; define('WP_SITEURL', 'https://' . $siteUrl); define('WP_HOME', 'https://' . $siteUrl); define( 'WP_CONTENT_URL', 'https://www.kw.com/blog/wp-content');
五、绑定 blog.kw.com 域名
在hosts 增加绑定 (线上环境可以直接在域名管理增加A记录)
#192.168.1.100 是我本地的ip
192.168.1.100 blog.kw.com
这样前台就可以基于 http://www.kw.com/blog/ 访问博客了,后台使用blog.kw.com访问,为什么前后台需要不同的域名?因为wp里面很多地方做了跳转,后台有些页面会跳到不存在的地址(404)。
甜心:本地开发环境部署https, 参考 https://www.cnblogs.com/jinshao/p/16477982.html