V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
flyzy2005
V2EX  ›  NGINX

问一个 WordPress 的 Nginx 配置问题

  •  
  •   flyzy2005 · 2018-04-18 10:46:40 +08:00 · 2498 次点击
    这是一个创建于 2410 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题

    Wordpress,一直用的是网上搜的配置方法,也一直正常运行,具体就是在 location /节点下加入如下配置:

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

    今天我想做一个 /goto/的 aff 跳转,结果发现个问题,host/goto/abc,假设我有篇文章的链接是 host/随便是啥 /abc-adf-cd,就是链接里有了 abc,它就会自动 301 到这篇文章,如果不存在文章链接里有 abc 就能正常走 goto 的流程。

    疑惑

    我就仔细看了下这个配置。其中我觉得第一个 if 应该没用吧,因为我没有 html 的文件。第二个和第三个就有点疑惑了,假设我访问的是 host/category1/postname1/(这是我 wordpress 的固定链接格式),那么 request_filename 应该就是 /var/wordpress/html/category1/postname1/,这个应该没有问题吧?但是 wordpress 情况下,这个路径里根本不会存在 index.php ,第二个应该是为了 wordpress 后台的一些东西设置的吧我觉得,因为那里可能有 index.php ,那访问文章的时候就是直接进第 3 个 if,condition 很好理解,但是这个 rewrite 规则就奇怪了,(.*) /index.php ?随便什么的 index.php ?这个应该怎么理解啊?

    7 条回复    2018-04-18 13:50:38 +08:00
    BOYPT
        1
    BOYPT  
       2018-04-18 11:20:28 +08:00
    不要使用 if,一个 try 就可以。
    flyzy2005
        2
    flyzy2005  
    OP
       2018-04-18 11:28:27 +08:00 via iPhone
    @BOYPT 能举个例子么?
    BOYPT
        3
    BOYPT  
       2018-04-18 11:34:07 +08:00
    location / {
    try_files $uri $uri/ /index.php?$args;
    }

    这是标准配置了呗,找一些新点的文章看。
    flyzy2005
        4
    flyzy2005  
    OP
       2018-04-18 11:51:37 +08:00
    @BOYPT
    我改成了 try_files $uri $uri/ /index.php$is_args$args;
    固定链接确实可以正确显示,但是还是会出现我那个问题,/goto/abc 会被转向别的链接...例如可能会被转向 /wordpress/abc-ajs-sjiw/ 只要我的 postname 里有 abc
    BOYPT
        5
    BOYPT  
       2018-04-18 13:05:13 +08:00
    你想自定义一个路径就 location = /goto/abc { return xxxx 301 }就行啊,不需要搞 if 什么的
    flyzy2005
        6
    flyzy2005  
    OP
       2018-04-18 13:48:30 +08:00
    @BOYPT 我现在就是遇到问题了..不知道怎么配置 我 /goto/abc 会被 nginx 自动返回成 /category/abc-ads-is,而不是直接 host/goto/abc
    BOYPT
        7
    BOYPT  
       2018-04-18 13:50:38 +08:00
    @flyzy2005 我 5 楼不是给出配置了么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2776 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.