2017-06-23 4 views
0

私は何かユニークなことをしようとしていますが、NGINXの書き換えについての読書や、特定のページのCATCH ALLの作成方法については数時間を費やしました。私が何をしたいかNGINX Wordpressの具体的なページを書き直す方法

mysite.com/Subdivision/はWordPressのページです。

私はすべてデフォルトでは、最大高wordpressのページ(mysite.com/Subdivision/)に行くことをランダムに(TAILページ)を生成することができるようにしたい:

mysite.com/Subdivision/Green-Trails
mysite.com/Subdivision/River-Oaks mysite.com/Subdivision/Creek-Plantation


そして私/区/ページの内側に、私は「グリーン・トレイル」をどうするか、それを伝えるスクリプトを記述します「River-Oaks」および「Creek-Plantation」

それが動作した後、目標はまた

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

のような他のものを追加することで、IF私/サブディビジョンのページには、」設定されています4-bdr "がRequest-URIにある場合は、これを設定します。リクエストURIにIF with-poolがある場合、これを設定...これはすべてPHPスニペットコードで行われます。

NGINX書き込みのハードルを乗り越えなければなりません。

これはnginxのと私の現在のCentminセットアップです:あなたが見ることができるように

## 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 ## 

:私は奉仕するnginxのを教えしようとしていますどこ `

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

`

です/ WordPressにサブディビジョン/ページ変数を設定し、Wordpressの他のURL/Green-Trails// River-Oaks /、Creek/Plantation/

しかし、これは動作していない、誰かが私を逃した私を助けてくださいできますか?

答えて

0

問題は、WordPressがクエリ文字列を使用して表示するページを決定しないことです.REQUEST_URIから直接情報を取得します.REQUEST_URIは通常、元のURIに設定されます(内部書き換えが実行される前)。

単純な解決策は、外部リダイレクトを実行することですが、それはブラウザに表示されるURIを変更します。あなたが明示的にSCRIPT_FILENAMEとREQUEST_URIを設定することによって達成することができます欲しい

location ^~ /subdivision/ { 
    include fastcgi_params; 
    fastcgi_pass localhost:9000; 
    fastcgi_param SCRIPT_FILENAME $document_root/index.php; 
    fastcgi_param REQUEST_URI  /Subdivision/; 
} 
関連する問題