首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NGINX如何为Wordpress重写特定页面

NGINX如何为Wordpress重写特定页面
EN

Stack Overflow用户
提问于 2017-06-24 02:21:42
回答 1查看 227关注 0票数 0

所以我正在尝试做一些独特的事情,我花了几个小时阅读关于NGINX重写的文章,以及如何为特定的页面创建一个CATCH ALL。

我想做的是:

mysite.com/Subdivision/是一个wordpress页面。

我希望能够随机生成(尾部页面),默认情况下所有这些页面都会转到更高的wordpress页面(mysite.com/Subdivision/):

mysite.com/Subdivision/Green-Trails

mysite.com/Subdivision/River-Oaks

mysite.com/Subdivision/Creek-Plantation

然后在我的/Subdivision/页面中,我将编写脚本,告诉它如何处理"Green-Trails“、”River-Oak“和"Creek-Plantation”

在这之后,目标也是添加其他东西,比如

mysite.com/Subdivision/Green-Trails/4-bdr/with-pool/

我的/Subdivision页面将有设置“如果在请求URI中找到4-bdr”,设置这个。如果在请求URI中找到了with-pool,则设置此...这一切都将在PHP代码片段中完成。

只需通过NGINX写入的障碍。

这是我目前使用NGINX的Centmin设置:

代码语言:javascript
复制
    ## BEGIN WORDPRESS MOD ##
index index.php index.html index.htm;
        # enforce www (exclude certain subdomains)
        if ($host !~* ^(www|subdomain))
        {
            #    rewrite ^/(.*)$ $scheme://www.$host/$1 permanent;
        }
        # enforce NO www if ($host ~* ^www\.(.*)) {
        #       set $host_without_www $1; rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent;
        #}


        # unless the request is for a valid file, send to bootstrap
        if (!-e $request_filename)
        {
                rewrite ^(.+)$ /index.php?q=$1 last;
        }


location ~ /subdivision/(.*) {
    index index.php;
    try_files $uri /index.php?q=/subdivision/&$args;
}

  location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass localhost:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

## END WORDPRESS MOD ##

如你所见:`

代码语言:javascript
复制
location ~ /subdivision/(.*) {
    index index.php;
    try_files $uri /index.php?q=/subdivision/&$args;
}

`

是我试图告诉NGINX为wordpress提供/Subdivision/ page变量,并告诉Wordpress忽略URL /Green-Trails/ /River-Oaks/,/Creek-Plantation/的其余部分的地方

但这不管用,有人能帮帮我吗,我哪里错过了?

EN

回答 1

Stack Overflow用户

发布于 2017-06-24 05:06:09

问题是WordPress不使用查询字符串来确定要显示的页面,它直接从REQUEST_URI获取信息,该URI通常被设置为原始URI(在执行任何内部重写之前)。

简单的解决方案是执行外部重定向,但这将更改浏览器中显示的URI。

您需要的内容可以通过显式设置SCRIPT_FILENAME和REQUEST_URI来实现:

代码语言:javascript
复制
location ^~ /subdivision/ {
    include fastcgi_params;
    fastcgi_pass localhost:9000;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param REQUEST_URI     /Subdivision/;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44727745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档