私はこの.htaccess設定から始めました:
Options -Indexes
<files wp-config.php>
order allow,deny
deny from all
</files>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress
そして、ホットリンクを使ってウェブサイトを盗難から守るために、コードの一番下にこのコードを追加して最善の解決策を探しました。
RewriteEngine on
RewriteCond %{REQUEST_URI} !hotlinking\.png$
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mywebsite\.com [NC]
RewriteRule \.(jpe?g|png|gif)$ /hotlinking.png [NC,L]
上記のコードは、ホットリンクを防ぐための最も一般的な解決策ですが、非常に明確ですが、うまくいきません。たとえば、画像のURLを貼り付けると、
https://www.mywebsite.com/wp-content/uploads/sites/2/2018/01/imagexample.jpg
ブラウザに画像が表示されます。
コードにエラーがありますか、それともより良い解決策がありますか?
画像のURLを貼り付けると
私はあなたがURLをブラウザのアドレスバーに直接貼り付けるときを意味していると思います。 (?)
その場合は、表示されている動作は正しいです。ブラウザにを表示してください。これは実際には「ホットリンク」ではありません。これは直接の要求です。 HTTP Refererヘッダーを送信しないサイトの実際のユーザーに対してこれらの画像をブロックしてしまう可能性があるため、(HTTP Refererが空のとき)直接のリクエストを現実的にブロックすることはできません。
次の条件は、この要求が発生するのを許可するものです。
RewriteCond %{HTTP_REFERER} !^$
すなわち。 HTTP_REFERER
がnotemptyの場合.
ASIDE: あなたの質問に "multisite"というタグを付けましたが、.htaccess
ファイルに両方のコードがあると思われます。単一サイトのコードが最初であるため、これが「勝ち」です。