自定义Wordpress插件会导致nginx重写出现问题

时间:2013-10-31 18:29:43

标签: wordpress plugins nginx

我对nginx有一个很大的问题,它是用于重定向/永久链接的wordpress-rules。

以下是我们所拥有的:

  1. 使用永久链接的博客(/%category%/%postname%/)
  2. nginx的
  3. 在开发系统上编码的自定义插件(产品比较)
  4. 在正常情况下,我们只需要使用以下nginx-line:

    try_files $uri $uri/ /index.php?$args;
    

    但它不适用于新插件!我的意思是我可以访问所有类别,帖子等。

    现在,当使用插件时,还有另一个部分(页面),用户可以在其中比较不同的产品。问题是,这个插件使用以下链接结构: /比较/产品名称/ 123 123是产品ID。

    在开发系统上我们做到了这一点:

    rewrite ^/compare/([a-z0-9-]+)/([0-9]+)?$ /?page_id=32134&id=$2 break;
    

    这很好用(在永久系统上永久链接功能没有激活)。

    激活固定链接后添加

    rewrite ^/compare/([a-z0-9-]+)/([0-9]+)?$ /?page_id=PAGEIDOFLIVESYSTEM&id=$2 break;
    location / {
    try_files $uri $uri/ /index.php?$args;
    }
    

    到我的nginx conf,wordpress说它无法找到一篇文章。

    我认为与重写规则存在冲突,但我不知道如何在尝试不同的东西后解决它。

    也许有人有个好主意!

    问候&请原谅我糟糕的英语!

    再见

2 个答案:

答案 0 :(得分:0)

我从未理解使用try_files的{​​{1}},我总是使用?args,你应该尝试一下

$request_uri

答案 1 :(得分:0)

谢谢你的回答!

我前一天自己找到了一个解决方案。 问题是插件,它使用自己的规则,但没有在wordpress上注册它们。我使用了一个插件,它允许我添加新规则并将它们放在第一位置上,并使它们比其他更重要。

第二个问题是一个未知的$ _GET-Var,需要在wordpress上注册。 Monkeyman Rewrite Plugin帮我找到了!

完成这两件事之后,我只需要添加 重写^ / compare /([a-z0-9 - ] +)/([0-9] +)?$ / compare-site-name?id = $ 2 break; 到我的nginx-conf!

这就是魔法......

也许我可以用某些(我认为)糟糕的书面插件来帮助这个解决方案的人!

再见