2017-07-07 8 views
1

特定のURLがアドレスバーのURLを変更しないで特定のパラメータを持つ特定のページに書き直すように設定しようとしています。NginxのWordPressは、特定のページにパターンを書き換えます

site.com/reviews/froot_loops_review.php?var=1 

がで何表示されるでしょう:

私は私が他のパラメータを追加できるようにしたいと思い、

site.com/reviews/froot_loops_review.php AND 
site.com/reviews/froot_loops_review 

が実際にさらに

site.com/review?title=froot_loops 

を表示したいと思います:

site.com/review?title=froot_loops&var=1 

nginxのconfファイルを編集するのは初めてですので、これは苦労していますが、これは私の持っている限りですが、動作しません(最初のマッチをしないためだと思います) :

location /reviews/ { 
    rewrite ^/reviews/(.*)_review.php(.*) /review?title=$1 break; 
    return 403; 
    } 

私はここで間違っていますか?私の次のステップは何ですか?何がNginxの書き換えを学ぶ良いリソースですか?

答えて

0

これは厳密な回答であるかわかりません。しかし、現在のソリューションには複数の問題があります。

これはWordPressサイトであるため、.phpで終わるURIを処理しているブロックはすでにlocation ~ \.php$です。 URI /reviews/froot_loops_review.phpはあなたの質問のlocation /reviews/ブロックには決して行きません。

locationディレクティブで^~修飾子を使用すると、nginxに一致する正規表現のロケーションブロックを強制的に無視させることができます。詳細はthis documentを参照してください。

書き換えられたURIは同じlocationブロック内で処理できないため、breakは間違った接尾辞です。あなたはlastを使ってより多くの成功を収めます。詳細は、this documentを参照してください。

しかし、主な問題はWordPress自体です。 WordPressは通常、要求されたページを識別するためにREQUEST_URI(最初に提示されたURI)を使用します。だから私たちはすべてを/index.phpに書き直して、正しいページを手に入れることができるのです。

WordPressで書き直したURIを外部リダイレクトなしで使用しようとすると(あなたがしたくないと言う)、やりにくいです。あなたはそれを達成するためにWordPressのプラグインを探しているほうがいいかもしれません - か、かわいいパーマリンクをあなたが望むように動作させるようにしてください。

関連する問題