0

短編小説: この手法を使用して、filemtime() を使用してファイル名に文字列を追加することにより、css および js ファイルを自動バージョン管理しています: http://w-shadow.com/blog/2012/07/30/automatic-versioning -of-css-js/

ローカル マシン (MAMP) で完全に起動して実行しましたが、ホスティングに WP Engine を使用しており、それらは nginx でセットアップされており、.htaccess 書き換えルールをサポートしていません。

ただし、PHP の正規表現 (preg_replace) を入力する場所があり、手順は次のようになります。

HTML
後処理 WordPress がページ全体の発行を終了した後、すべてのブログ HTML で実行される置換値への PHP 正規表現のマッピング。パターンと置換の動作は、preg_replace() の方法です。

次の例では、最初のパターンですべての HTML コメントを削除し、2 番目のパターンでファビコン (任意のファイル名拡張子を含む) を別のドメインからロードします。

#<!--.*?-->#s =>

#\bsrc="/(favicon\..*)"# => src="http://mycdn.somewhere.com/$1"

. ですから、この書き換えルールを PHP の正規表現に変換するのがどれほど難しいか疑問に思っています。

RewriteRule ^(.*)\.[\d]{10}\.(css|js)$ $1.$2 [L]

そして、これがApacheの書き換えと同じことをしているのであれば。この手法の要点は、css または js ファイルとそれらが変更された時間のブラウザー キャッシュを破壊することですが、さまざまな欠点があるクエリ文字列に頼ることはありません。

4

1 に答える 1

0

実際、ほとんど同じです。正規表現を取得して区切り、文字列にドロップして適切なものをエスケープし、書き換えルールを取得して単一引用符を使用して文字列にすると、完了です。あなたの例では:

$newUrl = preg_replace('/^(.*)\\.[\\d]{10}\\.(css|js)$/', '$1.$2', $url);

これにより、指定したすべての URL が適切に書き換えられます。ただし、これらの preg_replaces は大きなドキュメント全体で行われているようです。つまり、そこにある正規表現は、あなたが思っていることを実行しません。ただし、それは完全に別の問題です。あなたの要件が何であるかわからないので、私は推測さえしません。正規表現の作成についてサポートが必要な場合は、特定の要件について別の質問を開いてください。

また: 次回は、ドキュメントを確認してください。

于 2012-09-20T04:36:39.667 に答える