0

私は多くの例を見てきましたが、これについて頭を悩ませることはできません。それは不可能かもしれません。私はWordpressサイトの混乱を継承しました。

私はこのDIR構造を持っています、Wordpress:

/wp-content/uploads/
/wp-content/uploads/2011
/wp-content/uploads/2012
/wp-content/uploads/Organised
/wp-content/uploads/Organised/0-9
/wp-content/uploads/Organised/A
/wp-content/uploads/Organised/B
/wp-content/uploads/Organised/ and so on ... to Z

基本的に、フォルダには93,000を超えるファイルがあり/wp-content/uploads/、2011年と2012年のフォルダにはいくつかありました。93,000個のファイルを移動する必要があるため、最初の文字/潜在的なファイルの数を反映したフォルダーを含む「Organized」フォルダーを作成することにしました。

これは問題ではありませんが、移動する場合は、外部リクエストが古いURLに基​​づいてこれらのファイルにアクセスできることを確認する必要があります。

それで:

/wp-content/uploads/APicture.jpg

書き直します:

/wp-content/uploads/Organised/A/APicture.jpg

次のような実際のURLへのアクセスを許可します。

/wp-content/uploads/2012/AnotherPicture.jpg

このようなリライトURLは機能すると思いましたが、機能せず、さまざまなバリエーションを試しました。おそらく、このように機能しないのでしょうか。

RewriteRule ^/wp-content/uploads/([^/]+)(\.png|\.jpg|\.bmp|\.gif)$ /wp-content/Organised/T/$1$2

注:テストでは、URLをチェックしていました。/wp-content/uploads/taylor-swift-harry-styles.jpgそのため、結果の書き換えURLをハードコーディングしましたが、最初の文字と一致するように変更する必要があることに気付きました。

ご協力ありがとうございます。

4

2 に答える 2

0

Faaのコメントに従って、コードを変更して、読みやすくするためにここに配置しました。

#   !!!
#   !!! Requires directories to be present: a-z; A-Z; 0-9
#   !!!

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !wp-content/uploads/_Organised   [NC]
RewriteCond %{REQUEST_URI} wp-content/uploads/([A-Za-z0-9])([^/]+)\.([^/]+)$/? [NC]
RewriteRule .* wp-content/uploads/_Organised/%1/%1%2.%3 [L]

#   !!!
#   !!! Matches "Other" characters/files that were not caught above
#   !!!

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !wp-content/uploads/_Organised   [NC]
RewriteCond %{REQUEST_URI} wp-content/uploads/(.*)$/? [NC]
RewriteRule .* wp-content/uploads/_Organised/_Misc/%1 [L]

うまくいくと思いますが、そうであるようですが、正規表現と連携していますか?/wp-content/uploads/のファイルのみが一致し、それ以上深くないことを確認する必要があります。

そのため、-fフラグと-dフラグを設定しましたが、これは過剰なキルですか?それらを入れるまでは、サブディレクトリ内のファイルをキャッチする2番目のルールに問題がありました。また、ここで($)記号が保証されていますか?

于 2013-01-13T12:08:39.457 に答える
0

あなたはこれを試すことができます:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !wp-content/Organised   [NC]
RewriteCond %{REQUEST_URI} wp-content/uploads/(\w)([^/]+)\.(png|jpg|bmp|gif)/? [NC]
RewriteRule .*   wp-content/Organised/%1/%1%2.%3    [L]

次のようなURLをリダイレクトします。

http://example.com/wp-content/uploads/Taylor-swift-harry-styles.jpg

しかし、これは好きではありません:

http://example.com/wp-content/uploads/2012/Taylor-swift-harry-styles.jpg

に:

http://example.com/wp-content/Organised/T/Taylor-swift-harry-styles.jpg

ここで、directoryTはファイル名の最初の文字です。1桁または1文字にすることができます。

ただし、大文字と小文字は保持されます。たとえば、文字が小文字の場合、マップされたディレクトリは存在し、存在する必要がありtます。文字が大文字の場合も同様です。

于 2013-01-13T09:13:34.847 に答える