• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. 未分类
  3. 正文

Nginx配置子路径WordPress(文件目录与url不同)

2017年08月06日 522点热度 0人点赞 0条评论
2016-04-01 from---https://artoriax.wordpress.com/2016/04/01/nginx%E9%85%8D%E7%BD%AE%E5%AD%90%E8%B7%AF%E5%BE%84wordpress%EF%BC%88%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E4%B8%8Eurl%E4%B8%8D%E5%90%8C%EF%BC%89/

先说结论:

第一需要使用Alias指定文件夹,第二由于try_files的bug,需要手写rewrite。

Nginx简直就是个智障。妈的花了我一个下午,翻了几十个stackoverflow和google才找到这么一个无人问津的小帖子。

需求:

主域名example.com下已经挂了静态站点,文件在/home/html/portal。现在要在example.com/blog目录下挂一个Wordpress博客,文件在/home/html/wordpress。

过程:

这么简单的一个小问题,竟然让人大费周章了半天时间,Nginx大概是我见过的这方面最垃圾的东西。要不是看在你性能高的份上,谁™会屌你。

  • 坑1:root指定的文件夹会与location前缀进行组合。

于是不论你怎么改root,只要物理路径不和url进行匹配,只要wordpress不放在根目录,那么Nginx只会在/physical/path/+/virtual/dir/的组合路径下查找wordpress文件(妈的智障,我为什么非要把wordpress文件夹改成和url一样?)

  • 坑2:经过一番google,你发现了alias命令,结果alias的路径末尾如果没有斜线就会404。

是不是想起了proxy_pass时候的斜线和location里的斜线?

  • 坑3:之前google到的很多例子,包括官方例子都写给你:try_files uri uri/ /virtual/dir/index.php?$args; 结果怎么不能用啊?

又经过一番google,你发现因为一个远古bug导致alias和try_files共用时出错了。于是你还得自己重写url。

  • 坑4:配置文件已经写得乱成一团了,我想把Wordpress的配置放在一起行不行?于是写成了nested location,这父级和子location是怎么个匹配法啊?

不知道为什么,没什么人用nested location。官方也没做什么解释,google了一番之后获得了一个提示,location向下传递的时候不会变化,仍然是完整匹配。于是又给所有的子location加了前缀正则匹配。

总算搞定了。。感觉好厉害啊,完全不懂怎么做到的。。。

参考配置例子:

location /blog {
  return 301 $scheme://$host/blog/;
}

location @blog {
  rewrite ^/blog/(.*)$ /blog/index.php?$1;
}

location /blog/ {
  index index.php;
  alias /home/html/wordpress/;

  try_files $uri $uri/ @blog;

  # Add trailing slash to */wp-admin requests.
  rewrite /wp-admin$ $scheme://$host$uri/ permanent;

  # Directives to send expires headers and turn off 404 error logging.
  location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
    access_log off;
    log_not_found off;
    expires max;
  }

  location ~* ^/blog/(?:uploads|files)/.*\.php$ {
    deny all;
  }

  # Pass all .php files onto a php-fpm/php-fcgi server.
  location ~ ^/blog/(.+\.php)$ {
    alias /home/html/wordpress/$1;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_intercept_errors on;
    fastcgi_index index.php;
    fastcgi_pass php;
  }
}

参考链接

http://www.netz39.de/2014/installation-of-wordpress-in-a-subdirectory-with-nginx/

标签: 暂无
最后更新:2017年08月06日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
brave编译打包时dump_syms报错Couldn't locate EXE or DLL file 使用Windows Kits创建PE 及精简镜像 Windows精简部署相关简易内容 APC UPS SUA1000ICH 踩坑记 TrueNAS SCALE虚拟机无法 Ping主机 TrueNas Scale libvirt-sock RDMA RoCE相关资料 Linux系统修改网卡名(eth0-3) Linux系统打开SRIOV 构建android内核时DTC工具中的多个定义错误 Windows 来宾系统提示“安全删除硬件” 修改jar的三种方法(反编译jar) 如何在 Debian 10上安装和配置 VNC Openwrt内SR-IOV网卡桥接问题 Linux下编译android 时报错loadlocale.c:130 windows 查看文件夹被那个进程占用 MongoDB中的多表关联 mongodb 学习记录
vim 按键异常 隐藏可移动设备列表中不希望出现的硬件 映射Windows共享到FreeNAS Windows下基于cwRsync的文件同步 类树莓派单板电脑汇总 设立Hyper-V和VMware多个服务之间共存 ORA-01652:无法通过128(在表空间temp中)扩展temp段 解决方法 linux(ubuntu为例)解决wifi不能用的方法 Nginx上搭建WordPress及配置 完美迁移 SSH免密码登录 git出现 You are in the middle of a merge -- cannot amend问题解决方法 卸载linux Mint自带jdk并安装最新jdk 瑞斯康达 ISCOM HT8151 光猫破解超级管理员密码 目录级别的冗余存储:SnapRAID 浏览器about:相关链接 nginx location匹配规则 Linux关闭IPv6 最适合编程的10大字体推荐
标签聚合
编译 https linux 密码 网卡 com git 下载 android chrome ssl 文件 docker http 路由 e

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS