2016-04-26 20 views
0

私は簡単にしようとします。nginxリライト&パラメータフルURLとファイル拡張子

http://mywebsite.com/http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1 

要求:

rewrite ^/(.*)?$ /index.php?completeURL=$1 last; 

は、私のようなURLをしたい:

http://mywebsite.com/index.php?completeURL=http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1 

現在、nginxのルールが問題を抱えている私は、次のnginxの書き換えのURLを持っています。 例:パラメータに.php拡張子が含まれている場合、彼は自分のサーバー上でそのファイルを探します。

例:http://mywebsite.com/dir1/dirx/article.php

どのように私はあなたの意見では、この問題を解決することができますか?


UPDATE:ここ nginxの構成(および書き換え)ファイル:

答えて

0

のTh (サーバがindex.phpを提供する以外の何もしないと仮定して)通常のlocation ~ \.php$ブロックを削除し、fastcgi_passと同じブロック内にrewrite ... break;を実行します。

location/{ 
    rewrite ^/(.*)?$ /index.php?completeURL=$1 break; 
    fastcgi_pass ... 
    ... 
} 

代替戦略はは、ローカルファイルが既に存在していないが、あなたは.phpファイルがあまりにもテストされていることを確認する必要がある場合にのみ書き換えを実行することです:を含む、これを達成するためのいくつかの方法がありますが、 。たとえば:

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location ~ \.php$ { 
    try_files $uri @rewrite; 
    fastcgi_pass ... 
    ... 
} 
location @rewrite { 
    rewrite ^/(.*)?$ /index.php?completeURL=$1 last; 
}   
+0

私はあなたの第二の溶液を試してみましたが、私はこのエラーを取得: '2016年4月26日午後09時21分05秒[エラー] 10591#0:リダイレクトしばらく* 1846リライトまたは内部リダイレクトサイクルクライアント:xx.xx.xx.xx、サーバー:website.com、リクエスト: "GET /http://www.website.com/dfgdfgghgh.cfm HTTP/2.0"、ホスト: website.com " – Ivan

+0

/index.phpが存在しない場合、ループします。 「root」は正しく定義されていますか? –

+0

こんにちは@リチャードスミット。私は自分の投稿を更新しました。私は、完全なnginx設定ファイルを含んでいます。私たちに見せてください。 – Ivan

関連する問題