1

DrupalサイトとBoostを提供するためにNginxを使用しています。

これまでは正常に機能していましたが、最近モバイルバージョンを追加し、モバイルバージョンを別のディレクトリにキャッシュするようにboost / drupalを構成しましたが、デバイスがモバイルの場合はadecuateディレクトリをチェックするようにNginxを構成しようとしていますが一部のページで404を取得していますが、キャッシュされたファイルにヒットすることのないページもあります。
私は次のような場所@cacheを持っています:

set $mobile_rewrite desktop;
if ($http_user_agent ~ (iPhone|Android) ) {
    set $mobile_rewrite mobile;
}
try_files /cache/normal/$mobile_rewrite/$host${uri}_$args.html /cache/$host${uri}_$args.html @drupal;

モバイルユーザーエージェントでフロントページにアクセスすると、モバイルバージョンが提供されますが、再作成するたびに(@drupalの場所に移動します)、サイト内をさらにナビゲートしようとすると(モバイルユーザーエージェントを使用して) 404エラーが発生します

何か案は?

カスタムエラーとさまざまな場所を使用して解決しました。

4

1 に答える 1

0

私はついにこれを回避しました。そうするために、変数を使用してtry_filesディレクティブを変更しようとする代わりに、アプローチを変更しました。

「マップ」を設定してユーザーエージェントを確認し、モバイルかどうかを判断します。

#Inside my http block
map $http_user_agent $is_desktop {
  default 0;
  ~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
  ~*spider|crawl|slurp|bot 1; # bots
  ~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
map $is_desktop $mobile_device {
  1 0;
  0 1;
}

次に、私のサーバーブロックで、デフォルト/場所で:

error_page 418 = @mobile; #defined a new error page pointing to a @location  
    if ($mobile_device) { #checking for above variable/map if true, goes to @location defined in error
           return 418;
    }

この新しい場所は、以前持っていた@cacheとまったく同じですが、別のディレクトリを指しています。
それが他の誰かに役立つことを願っています!

于 2012-10-05T02:50:03.067 に答える