0

ファイル構造を変更しています。以前はサイトのルート レベルで使用できた URL の一部は、サブフォルダーに移動されました。

だから私は持ってい$uriます。Itry_files $uri @check_subfolder; ファイル (通常の .html ファイル) がまだルート レベルに存在する場合、またはその URL が適切に記述されている場合は、正常に機能try_files $uriします。しかし、ファイルがサブフォルダーに移動された場合は、次のように入力します

location @check_subfolder {
}

ここでリダイレクトを行うだけでrewrite ^(.*) $scheme://$host/articles$1 permanent;も、すべてが完璧です。しかし、最初にサブフォルダーに$uri実際に存在するかどうかを確認したいと思います。/articles私もです

location @check_subfolder {
    if (-f "/articles${uri}") {
        rewrite ^(.*) $scheme://$host/articles$1 permanent;
    }
}

エラー 404 に落ちるだけです。リダイレクトは行われません。ifリダイレクトなしで動作します。したがって、明らかに問題は、条件をどのように定式化するかです。

if (-f "/articles${uri}")動作しません。 if (-f "/articles${request_filename}")動作しません。 if (-f "/articles/${request_filename}")動作しません。 if (-f /articles/$request_filename)動作しません。 if (-f /articles/$uri)動作しません。

私は明らかに間違った連結を書きます。

4

1 に答える 1

1

-f私の答えは、Webページではなくファイルシステム内のファイルを検索するとは思わなかったため、 $document_root. だから今、それは次のように動作します

location @check_subfolders {
    if (-f $document_root/articles/$uri ) {
        rewrite ^(.*) $scheme://$host:8090/articles$1 permanent;
    }
}
于 2013-01-07T18:15:26.187 に答える