Wp-rocket: サイトのURLにパスが含まれている場合、CSS / JSの縮小/組み合わせがKinstaで機能しない

作成日 2020年09月17日  ·  5コメント  ·  ソース: wp-media/wp-rocket

問題を送信する前に、次の手順を完了していることを確認してください。

  • 最新バージョンを使用していることを確認してください✅
  • 検索機能を使用して、バグが以前に報告されていないことを確認しました✅

バグを説明する

以下は、サブサイトがサブフォルダーにあるマルチサイトで見つかりました。 私はそれをチェックしていませんが、WordPressサブフォルダーのインストールについても同じことが言えます。

独自のCDN書き換えを行うKinstaでは、サイトのURLにパス( https://www.example.com/path/が含まれていると、CSS / JavaScriptの組み合わせが失敗します。

次のチェックが失敗しています。
https://github.com/wp-media/wp-rocket/blob/8f7f67b621e5085ccf6424a08a15ce636e4fbf2f/inc/functions/formatting.php#L512

これは、次の行にあるためです。
https://github.com/wp-media/wp-rocket/blob/8f7f67b621e5085ccf6424a08a15ce636e4fbf2f/inc/Engine/CDN/Subscriber.php#L238

hostのみを使用しています:

$site_url = $site_url_parts['scheme'] . '://' . $site_url_parts['host'];

最終的に、 $fileは、ここにルートディレクトリパスが含まれません。
https://github.com/wp-media/wp-rocket/blob/8f7f67b621e5085ccf6424a08a15ce636e4fbf2f/inc/functions/formatting.php#L497

これはfalseを返し、アセットは縮小/結合されません。

再現するには

動作を再現する手順:

  1. マルチサイトを作成し、サブフォルダーサブサイトを追加します。
  2. Kinstaの書き換えをエミュレートするために、アセットにダミーリンクをいくつか追加します。
  3. CDNを有効にし、ダミーリンクで使用したCNAMEを使用します。
  4. CSS / JavaScriptの縮小/組み合わせを有効にします。
  5. サイトをチェックして、縮小/組み合わせが機能しているかどうかを確認します。

予想される行動

KinstaまたはCDN書き換えを行うホストを使用する場合、パスを含むサイトのURLに関係なく、CSS / JavaScriptの組み合わせが機能するはずです。

追加のコンテキスト

関連チケット: https //secure.helpscout.net/conversation/1272259848/191944?folderId = 2135277

バックロググルーミング(WP Media開発チームのみが使用)

  • []問題を再現する
  • []根本原因を特定する
  • []ソリューションのスコープ
  • []労力を見積もる
3rd party compatibility combine CSS combine JS minify CSS minify JS grooming medium major bug

最も参考になるコメント

@ alfonso100への小道具

次の行を置き換えることで、この問題を解決できます

https://github.com/wp-media/wp-rocket/blob/28e7b00cb74df0a18b79c65631d0ba438e019db8/inc/Engine/CDN/Subscriber.php#L231

次の行で

$site_url = untrailingslashit( $site_url_parts['scheme'] . '://' . $site_url_parts['host'] . $site_url_parts['path'] );

それはうまくいくはずです、私は私たちの顧客のサイトの1つでそれを試しました、そしてそれは働いているようです。

全てのコメント5件

これに関する更新はありますか? それはかなり悪いバグです:/

お客様は、このケースに関する新しいチケットを開きました。
https://secure.helpscout.net/conversation/1332879329/210266?folderId=2683093

@ alfonso100への小道具

次の行を置き換えることで、この問題を解決できます

https://github.com/wp-media/wp-rocket/blob/28e7b00cb74df0a18b79c65631d0ba438e019db8/inc/Engine/CDN/Subscriber.php#L231

次の行で

$site_url = untrailingslashit( $site_url_parts['scheme'] . '://' . $site_url_parts['host'] . $site_url_parts['path'] );

それはうまくいくはずです、私は私たちの顧客のサイトの1つでそれを試しました、そしてそれは働いているようです。

グルーミングを終了するまでの追加のコンテキスト:
Kinsta(およびBunnyCDN)は、CDNを使用すると、アセットURLからサブディレクトリパスが削除されるため、サイトURLをコンテンツパスに置き換えると、正しいパスが提供されないため、ここで行ったのは、サイトURLにもパスを追加することです。

例えば:
メインURL: https
cdnなしのアセットURL: https
アセットのURL: https
したがって、アセットURLにサブディレクトリがあると仮定してhttps://mk0runnerslab22n01ig.kinstacdn.com/https://example.org/に置き換えようとします(ただし、kinstaではそうではありません)。したがって、最終的なURLはhttpsです。

関連チケット: https //secure.helpscout.net/conversation/1367510564/223237/

@ engahmeds3edは、そこで修正をすでに確認しています。

このページは役に立ちましたか?
0 / 5 - 0 評価