Make WordPress Core

Changeset 41139


Ignore:
Timestamp:
07/25/2017 12:49:22 AM (7 years ago)
Author:
pento
Message:

REST API: Always add index.php to the REST URL when pretty permalinks are disabled.

When pretty permalinks are disabled, the web server will internally forward requests to index.php. Unfortunately, nginx only forwards HTTP/1.0 methods: PUT, PATCH, and DELETE methods will return a 405 error.

To work around this nginx behaviour, including index.php in the REST URL skips the internal redirect.

Fixes #40886.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api.php

    r40843 r41139  
    325325    } else {
    326326        $url = trailingslashit( get_home_url( $blog_id, '', $scheme ) );
     327        // nginx only allows HTTP/1.0 methods when redirecting from / to /index.php
     328        // To work around this, we manually add index.php to the URL, avoiding the redirect.
     329        if ( 'index.php' !== substr( $url, 9 ) ) {
     330            $url .= 'index.php';
     331        }
    327332
    328333        $path = '/' . ltrim( $path, '/' );
  • trunk/tests/phpunit/tests/oembed/controller.php

    r41047 r41139  
    417417
    418418    function test_get_oembed_endpoint_url() {
    419         $this->assertEquals( home_url() . '/?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url() );
    420         $this->assertEquals( home_url() . '/?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url( '', 'json' ) );
    421         $this->assertEquals( home_url() . '/?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url( '', 'xml' ) );
     419        $this->assertEquals( home_url() . '/index.php?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url() );
     420        $this->assertEquals( home_url() . '/index.php?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url( '', 'json' ) );
     421        $this->assertEquals( home_url() . '/index.php?rest_route=/oembed/1.0/embed', get_oembed_endpoint_url( '', 'xml' ) );
    422422
    423423        $post_id     = $this->factory()->post->create();
     
    425425        $url_encoded = urlencode( $url );
    426426
    427         $this->assertEquals( home_url() . '/?rest_route=%2Foembed%2F1.0%2Fembed&url=' . $url_encoded, get_oembed_endpoint_url( $url ) );
    428         $this->assertEquals( home_url() . '/?rest_route=%2Foembed%2F1.0%2Fembed&url=' . $url_encoded . '&format=xml', get_oembed_endpoint_url( $url, 'xml' ) );
     427        $this->assertEquals( home_url() . '/index.php?rest_route=%2Foembed%2F1.0%2Fembed&url=' . $url_encoded, get_oembed_endpoint_url( $url ) );
     428        $this->assertEquals( home_url() . '/index.php?rest_route=%2Foembed%2F1.0%2Fembed&url=' . $url_encoded . '&format=xml', get_oembed_endpoint_url( $url, 'xml' ) );
    429429    }
    430430
  • trunk/tests/phpunit/tests/rest-api.php

    r40101 r41139  
    315315        // In non-pretty case, we get a query string to invoke the rest router.
    316316        $this->set_permalink_structure( '' );
    317         $this->assertEquals( 'http://' . WP_TESTS_DOMAIN . '/?rest_route=/', get_rest_url() );
    318 
    319     }
     317        $this->assertEquals( 'http://' . WP_TESTS_DOMAIN . '/index.php?rest_route=/', get_rest_url() );
     318    }
     319
    320320    /**
    321321     * @ticket 34299
  • trunk/tests/phpunit/tests/rest-api/rest-request.php

    r40815 r41139  
    548548            array(
    549549                'permalink_structure' => '',
    550                 'original_url'        => 'http://' . WP_TESTS_DOMAIN . '/?rest_route=%2Fwp%2Fv2%2Fposts%2F1&foo=bar',
     550                'original_url'        => 'http://' . WP_TESTS_DOMAIN . '/index.php?rest_route=%2Fwp%2Fv2%2Fposts%2F1&foo=bar',
    551551            ),
    552552        );
  • trunk/tests/qunit/fixtures/wp-api-generated.js

    r41006 r41139  
    3838            ],
    3939            "_links": {
    40                 "self": "http://example.org/?rest_route=/"
     40                "self": "http://example.org/index.php?rest_route=/"
    4141            }
    4242        },
     
    6464            ],
    6565            "_links": {
    66                 "self": "http://example.org/?rest_route=/oembed/1.0"
     66                "self": "http://example.org/index.php?rest_route=/oembed/1.0"
    6767            }
    6868        },
     
    9393            ],
    9494            "_links": {
    95                 "self": "http://example.org/?rest_route=/oembed/1.0/embed"
     95                "self": "http://example.org/index.php?rest_route=/oembed/1.0/embed"
    9696            }
    9797        },
     
    143143            ],
    144144            "_links": {
    145                 "self": "http://example.org/?rest_route=/oembed/1.0/proxy"
     145                "self": "http://example.org/index.php?rest_route=/oembed/1.0/proxy"
    146146            }
    147147        },
     
    169169            ],
    170170            "_links": {
    171                 "self": "http://example.org/?rest_route=/wp/v2"
     171                "self": "http://example.org/index.php?rest_route=/wp/v2"
    172172            }
    173173        },
     
    496496            ],
    497497            "_links": {
    498                 "self": "http://example.org/?rest_route=/wp/v2/posts"
     498                "self": "http://example.org/index.php?rest_route=/wp/v2/posts"
    499499            }
    500500        },
     
    10671067            ],
    10681068            "_links": {
    1069                 "self": "http://example.org/?rest_route=/wp/v2/pages"
     1069                "self": "http://example.org/index.php?rest_route=/wp/v2/pages"
    10701070            }
    10711071        },
     
    16051605            ],
    16061606            "_links": {
    1607                 "self": "http://example.org/?rest_route=/wp/v2/media"
     1607                "self": "http://example.org/index.php?rest_route=/wp/v2/media"
    16081608            }
    16091609        },
     
    17891789            ],
    17901790            "_links": {
    1791                 "self": "http://example.org/?rest_route=/wp/v2/types"
     1791                "self": "http://example.org/index.php?rest_route=/wp/v2/types"
    17921792            }
    17931793        },
     
    18491849            ],
    18501850            "_links": {
    1851                 "self": "http://example.org/?rest_route=/wp/v2/statuses"
     1851                "self": "http://example.org/index.php?rest_route=/wp/v2/statuses"
    18521852            }
    18531853        },
     
    19141914            ],
    19151915            "_links": {
    1916                 "self": "http://example.org/?rest_route=/wp/v2/taxonomies"
     1916                "self": "http://example.org/index.php?rest_route=/wp/v2/taxonomies"
    19171917            }
    19181918        },
     
    20912091            ],
    20922092            "_links": {
    2093                 "self": "http://example.org/?rest_route=/wp/v2/categories"
     2093                "self": "http://example.org/index.php?rest_route=/wp/v2/categories"
    20942094            }
    20952095        },
     
    23242324            ],
    23252325            "_links": {
    2326                 "self": "http://example.org/?rest_route=/wp/v2/tags"
     2326                "self": "http://example.org/index.php?rest_route=/wp/v2/tags"
    23272327            }
    23282328        },
     
    26042604            ],
    26052605            "_links": {
    2606                 "self": "http://example.org/?rest_route=/wp/v2/users"
     2606                "self": "http://example.org/index.php?rest_route=/wp/v2/users"
    26072607            }
    26082608        },
     
    28862886            ],
    28872887            "_links": {
    2888                 "self": "http://example.org/?rest_route=/wp/v2/users/me"
     2888                "self": "http://example.org/index.php?rest_route=/wp/v2/users/me"
    28892889            }
    28902890        },
     
    31303130            ],
    31313131            "_links": {
    3132                 "self": "http://example.org/?rest_route=/wp/v2/comments"
     3132                "self": "http://example.org/index.php?rest_route=/wp/v2/comments"
    31333133            }
    31343134        },
     
    33843384            ],
    33853385            "_links": {
    3386                 "self": "http://example.org/?rest_route=/wp/v2/settings"
     3386                "self": "http://example.org/index.php?rest_route=/wp/v2/settings"
    33873387            }
    33883388        }
     
    34163416            ],
    34173417            "_links": {
    3418                 "self": "http://example.org/?rest_route=/oembed/1.0"
     3418                "self": "http://example.org/index.php?rest_route=/oembed/1.0"
    34193419            }
    34203420        },
     
    34453445            ],
    34463446            "_links": {
    3447                 "self": "http://example.org/?rest_route=/oembed/1.0/embed"
     3447                "self": "http://example.org/index.php?rest_route=/oembed/1.0/embed"
    34483448            }
    34493449        },
     
    34953495            ],
    34963496            "_links": {
    3497                 "self": "http://example.org/?rest_route=/oembed/1.0/proxy"
     3497                "self": "http://example.org/index.php?rest_route=/oembed/1.0/proxy"
    34983498            }
    34993499        }
     
    35743574            "collection": [
    35753575                {
    3576                     "href": "http://example.org/?rest_route=/wp/v2/posts"
     3576                    "href": "http://example.org/index.php?rest_route=/wp/v2/posts"
    35773577                }
    35783578            ],
    35793579            "about": [
    35803580                {
    3581                     "href": "http://example.org/?rest_route=/wp/v2/types/post"
     3581                    "href": "http://example.org/index.php?rest_route=/wp/v2/types/post"
    35823582                }
    35833583            ],
     
    37553755            "collection": [
    37563756                {
    3757                     "href": "http://example.org/?rest_route=/wp/v2/pages"
     3757                    "href": "http://example.org/index.php?rest_route=/wp/v2/pages"
    37583758                }
    37593759            ],
    37603760            "about": [
    37613761                {
    3762                     "href": "http://example.org/?rest_route=/wp/v2/types/page"
     3762                    "href": "http://example.org/index.php?rest_route=/wp/v2/types/page"
    37633763                }
    37643764            ],
     
    39213921            "collection": [
    39223922                {
    3923                     "href": "http://example.org/?rest_route=/wp/v2/media"
     3923                    "href": "http://example.org/index.php?rest_route=/wp/v2/media"
    39243924                }
    39253925            ],
    39263926            "about": [
    39273927                {
    3928                     "href": "http://example.org/?rest_route=/wp/v2/types/attachment"
     3928                    "href": "http://example.org/index.php?rest_route=/wp/v2/types/attachment"
    39293929                }
    39303930            ],
     
    39883988            "collection": [
    39893989                {
    3990                     "href": "http://example.org/?rest_route=/wp/v2/types"
     3990                    "href": "http://example.org/index.php?rest_route=/wp/v2/types"
    39913991                }
    39923992            ],
    39933993            "wp:items": [
    39943994                {
    3995                     "href": "http://example.org/?rest_route=/wp/v2/posts"
     3995                    "href": "http://example.org/index.php?rest_route=/wp/v2/posts"
    39963996                }
    39973997            ],
     
    40154015            "collection": [
    40164016                {
    4017                     "href": "http://example.org/?rest_route=/wp/v2/types"
     4017                    "href": "http://example.org/index.php?rest_route=/wp/v2/types"
    40184018                }
    40194019            ],
    40204020            "wp:items": [
    40214021                {
    4022                     "href": "http://example.org/?rest_route=/wp/v2/pages"
     4022                    "href": "http://example.org/index.php?rest_route=/wp/v2/pages"
    40234023                }
    40244024            ],
     
    40424042            "collection": [
    40434043                {
    4044                     "href": "http://example.org/?rest_route=/wp/v2/types"
     4044                    "href": "http://example.org/index.php?rest_route=/wp/v2/types"
    40454045                }
    40464046            ],
    40474047            "wp:items": [
    40484048                {
    4049                     "href": "http://example.org/?rest_route=/wp/v2/media"
     4049                    "href": "http://example.org/index.php?rest_route=/wp/v2/media"
    40504050                }
    40514051            ],
     
    40824082            "archives": [
    40834083                {
    4084                     "href": "http://example.org/?rest_route=/wp/v2/posts"
     4084                    "href": "http://example.org/index.php?rest_route=/wp/v2/posts"
    40854085                }
    40864086            ]
     
    40954095            "archives": [
    40964096                {
    4097                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&status=future"
     4097                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&status=future"
    40984098                }
    40994099            ]
     
    41084108            "archives": [
    41094109                {
    4110                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&status=draft"
     4110                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&status=draft"
    41114111                }
    41124112            ]
     
    41214121            "archives": [
    41224122                {
    4123                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&status=pending"
     4123                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&status=pending"
    41244124                }
    41254125            ]
     
    41344134            "archives": [
    41354135                {
    4136                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&status=private"
     4136                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&status=private"
    41374137                }
    41384138            ]
     
    41474147            "archives": [
    41484148                {
    4149                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&status=trash"
     4149                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&status=trash"
    41504150                }
    41514151            ]
     
    41744174            "collection": [
    41754175                {
    4176                     "href": "http://example.org/?rest_route=/wp/v2/taxonomies"
     4176                    "href": "http://example.org/index.php?rest_route=/wp/v2/taxonomies"
    41774177                }
    41784178            ],
    41794179            "wp:items": [
    41804180                {
    4181                     "href": "http://example.org/?rest_route=/wp/v2/categories"
     4181                    "href": "http://example.org/index.php?rest_route=/wp/v2/categories"
    41824182                }
    41834183            ],
     
    42034203            "collection": [
    42044204                {
    4205                     "href": "http://example.org/?rest_route=/wp/v2/taxonomies"
     4205                    "href": "http://example.org/index.php?rest_route=/wp/v2/taxonomies"
    42064206                }
    42074207            ],
    42084208            "wp:items": [
    42094209                {
    4210                     "href": "http://example.org/?rest_route=/wp/v2/tags"
     4210                    "href": "http://example.org/index.php?rest_route=/wp/v2/tags"
    42114211                }
    42124212            ],
     
    42474247            "self": [
    42484248                {
    4249                     "href": "http://example.org/?rest_route=/wp/v2/categories/1"
     4249                    "href": "http://example.org/index.php?rest_route=/wp/v2/categories/1"
    42504250                }
    42514251            ],
    42524252            "collection": [
    42534253                {
    4254                     "href": "http://example.org/?rest_route=/wp/v2/categories"
     4254                    "href": "http://example.org/index.php?rest_route=/wp/v2/categories"
    42554255                }
    42564256            ],
    42574257            "about": [
    42584258                {
    4259                     "href": "http://example.org/?rest_route=/wp/v2/taxonomies/category"
     4259                    "href": "http://example.org/index.php?rest_route=/wp/v2/taxonomies/category"
    42604260                }
    42614261            ],
    42624262            "wp:post_type": [
    42634263                {
    4264                     "href": "http://example.org/?rest_route=%2Fwp%2Fv2%2Fposts&categories=1"
     4264                    "href": "http://example.org/index.php?rest_route=%2Fwp%2Fv2%2Fposts&categories=1"
    42654265                }
    42664266            ],
     
    43064306            "collection": [
    43074307                {
    4308                     "href": "http://example.org/?rest_route=/wp/v2/tags"
     4308                    "href": "http://example.org/index.php?rest_route=/wp/v2/tags"
    43094309                }
    43104310            ],
    43114311            "about": [
    43124312                {
    4313                     "href": "http://example.org/?rest_route=/wp/v2/taxonomies/post_tag"
     4313                    "href": "http://example.org/index.php?rest_route=/wp/v2/taxonomies/post_tag"
    43144314                }
    43154315            ],
     
    43584358            "self": [
    43594359                {
    4360                     "href": "http://example.org/?rest_route=/wp/v2/users/1"
     4360                    "href": "http://example.org/index.php?rest_route=/wp/v2/users/1"
    43614361                }
    43624362            ],
    43634363            "collection": [
    43644364                {
    4365                     "href": "http://example.org/?rest_route=/wp/v2/users"
     4365                    "href": "http://example.org/index.php?rest_route=/wp/v2/users"
    43664366                }
    43674367            ]
     
    43894389            "collection": [
    43904390                {
    4391                     "href": "http://example.org/?rest_route=/wp/v2/users"
     4391                    "href": "http://example.org/index.php?rest_route=/wp/v2/users"
    43924392                }
    43934393            ]
     
    44564456            "collection": [
    44574457                {
    4458                     "href": "http://example.org/?rest_route=/wp/v2/comments"
     4458                    "href": "http://example.org/index.php?rest_route=/wp/v2/comments"
    44594459                }
    44604460            ],
Note: See TracChangeset for help on using the changeset viewer.