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 ?这个应该怎么理解啊?
1
BOYPT 2018-04-18 11:20:28 +08:00
不要使用 if,一个 try 就可以。
|
3
BOYPT 2018-04-18 11:34:07 +08:00
location / {
try_files $uri $uri/ /index.php?$args; } 这是标准配置了呗,找一些新点的文章看。 |
4
flyzy2005 OP @BOYPT
我改成了 try_files $uri $uri/ /index.php$is_args$args; 固定链接确实可以正确显示,但是还是会出现我那个问题,/goto/abc 会被转向别的链接...例如可能会被转向 /wordpress/abc-ajs-sjiw/ 只要我的 postname 里有 abc |
5
BOYPT 2018-04-18 13:05:13 +08:00
你想自定义一个路径就 location = /goto/abc { return xxxx 301 }就行啊,不需要搞 if 什么的
|