问一个 WordPress 的 Nginx 配置问题

2018-04-18 10:46:40 +08:00
 flyzy2005

问题

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 ?这个应该怎么理解啊?

2401 次点击
所在节点    NGINX
7 条回复
BOYPT
2018-04-18 11:20:28 +08:00
不要使用 if,一个 try 就可以。
flyzy2005
2018-04-18 11:28:27 +08:00
@BOYPT 能举个例子么?
BOYPT
2018-04-18 11:34:07 +08:00
location / {
try_files $uri $uri/ /index.php?$args;
}

这是标准配置了呗,找一些新点的文章看。
flyzy2005
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
2018-04-18 13:05:13 +08:00
你想自定义一个路径就 location = /goto/abc { return xxxx 301 }就行啊,不需要搞 if 什么的
flyzy2005
2018-04-18 13:48:30 +08:00
@BOYPT 我现在就是遇到问题了..不知道怎么配置 我 /goto/abc 会被 nginx 自动返回成 /category/abc-ads-is,而不是直接 host/goto/abc
BOYPT
2018-04-18 13:50:38 +08:00
@flyzy2005 我 5 楼不是给出配置了么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447731

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX