技术解析

问一个 WordPress 的 Nginx 配置问题
0
2021-05-20 23:10:19
idczone

问题

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

            	if (-f $request_filename/index.html){
                    rewrite (.*) $1/index.html break;
                }

                if (-f $r大带宽服务器equest_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 ?这个应该怎么理解啊?


不要使用 if,一个 try 就可以。

能举个例子么?

location / {
try_files $uri $uri/ /index.php?$args;
}
这是标准配置了呗,找一些新点的文章看。


我改成了 try_files $uri $uri/ /index.php$is_args$args;
固定链接确实可以正确显示,但是还是会出现我那个问题,/goto/abc 会被转向别的链接...例如可能会被转向 /wordpress/abc-ajs-sjiw/ 只要我的 postname 里有 abc

你想自定义一个路径就 location = /goto/abc { return xxxx 301 }就行啊,不需要搞 if 什么的

我现在就是遇到问题了..不知道怎么配置 我 /goto/abc 会被 nginx 自动返回成 /category/abc-ads-is,而不是直接 host/goto/abc

我 5 楼不是给出配置了么

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服