.htaccessファイルとは何ですか?WordPressでどのように使用しますか?

公開: 2020-10-27

.htaccessファイルについて聞いたことがあるかもしれませんが、それが何であるか、または何をするのかについての手がかりはありませんでした。 この記事では、.htaccessファイルにスポットライトを当て、その謎を明らかにします。 この記事の終わりまでに、.htaccessファイルとは何か、.htaccessファイルの機能、および.htaccessファイルを使用して特定のタスクを実行する方法を理解できます。 さあ行こう!

.htaccessファイルとは何ですか?

.htaccessファイルが何であるかを正確に調べることから始めましょう。 「htaccess」は「ハイパーテキストアクセス」の略です。 この名前は、ファイルが最初に開発されたときに使用された目的を表します。 つまり、特定のファイルやディレクトリへのユーザーアクセスを制御するために使用されていました。 .htaccessが最初に登場して以来、物事は進んでおり、WordPressではさまざまな方法で使用されています。これについて詳しく説明します。

.htaccessは、Apache Webサーバーの特定の設定を上書きするため(ApacheはWebサーバーで一般的に使用されるソフトウェア)またはWebサイトの動作に影響を与える他のさまざまな機能を実装するために使用される構成WordPressコアファイルです。 これは、パーマリンクを有効にした直後にすべてのWordPressインストールに含まれ、通常はインストールのルートディレクトリにあります。 FileZillaやWinSCPなどのFTPクライアントを介してインストールファイルにアクセスすることで、表示または編集できます。

注:非表示のファイルが表示されるように、FTPクライアントの設定が変更されていることを確認してください。

デフォルトでは、パーマリンクが有効になると、WordPressWebサイトの.htaccessファイルの内容は次のようになります。

 # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress

まだ気付いていない方のために、行頭の「#」はコメントです。 # BEGIN WordPressおよび# END WordPressコメント行は、後でプラグインまたは自分でさらにルールが適用されたときにコンテンツが整理されたままになるように使用されます。 .htaccessファイルへの今後の追加は、これらの行の外側に配置する必要があります。

.htaccessファイルは、主にWordPressでWebサイトのパーマリンクを制御するために使用されます。 また、特定のファイルへのアクセスの制御、セキュリティとパフォーマンスの強化、カスタムヘッダーの送信など、他のさまざまなタスクの強力なツールとしても使用できます。

注:Webサイトの.htaccessファイルに加えられた変更は慎重に行うことが重要です。 このファイルの単純なタイプミスでさえ、Webサイトがクラッシュする可能性があります。 そのため、行っている変更について確信が持てない場合は、ライブWebサイトに適用する前に、ステージングサーバーでこれらをテストするのが理想的です。

.htaccessファイルでできること

それでは、.htaccessファイルを使用してWebサイトをより細かく制御する方法を見てみましょう。

'www'と'non-www'の間のリダイレクト

.htaccessファイルの一般的な使用法は、「ネイキッドドメイン」(www以外のバージョン)からwwwバージョンまたはその逆への永続的なリダイレクトを設定することです。

続行する前に、DNSで両方のドメインが正しいサーバーのIPアドレスに解決されるように設定されていることを確認してください。

また、WordPress管理エリアで、ネイキッドドメインがプライマリとして設定されているかどうかを確認します。

設定サイトのURL

次のコードをデフォルトのコンテンツの下の.htaccessファイルに追加することで、wwwドメインをネイキッドドメインにリダイレクトできます。

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

正反対のことを実行し(wwwがプライマリとして設定されている場合)、「非www」ドメインから「www」にリダイレクトするには、次のコードを挿入する必要があります。

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

コードで使用されている正規表現に精通しておらず、構文について詳しく知りたい場合は、時間をかけてREGEXの詳細をお読みください。 HTアクセスチートシートは、もう1つの非常に便利なツールです。

301リダイレクト(永続的なリダイレクト)

301リダイレクトは、URLが恒久的に別のURLに置き換えられたことを検索エンジンに通知し、ユーザーをその訪問者に新しい(正しい!)URLにリダイレクトします。 。

これは、.htaccessファイルに配置されたときにトリックを実行するコードの一部です。

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

上記の例では、ユーザーをWebサイト「mycompanyname.com」から「example.com」にリダイレクトしています。 もちろん、これらのセクションを独自のURLに置き換えることをお勧めします。

これは、ドメインの下のすべてのパスにも適用されます。 これは、たとえばmycompanyname.com/new.htmlがexample.com/new.htmlにリダイレクトされることを意味します

302リダイレクト(一時的なリダイレクト)

コンテンツが一時的に別の場所に移動されると、302リダイレクトが使用されます。 構文は301と同じです。例:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

実用的な観点からは、結果はまったく同じですが、重要な違いが1つあります。 301リダイレクトを使用すると、検索エンジンはページがライブではなくなったことを通知され、そうすることで、検索エンジンが検索結果からこのページを削除するように促します。 302リダイレクトの場合、元のURLは引き続きクロールされ、Googleは新しいURLの代わりにインデックスを作成し続けます。 そのため、一時的に代替コンテンツにリダイレクトするだけの場合のリダイレクトには理想的なソリューションです。

HTTPSに強制

最近では、SSL証明書を使用してWebサイトを保護することが非常に重要です。 これを行わないWebサイトでは、ブラウザバーに警告が表示され、Webサイトの信頼が損なわれる可能性があります。 さらに、Googleは実際にはHTTPS経由でコンテンツを配信しないWebサイトにペナルティを課しているため、検索ランキングが低下する可能性があります。

WebサイトにSSL証明書をインストールした場合でも、ユーザーがHTTPS以外のバージョンのサイトにアクセスできることがわかります。 これを行うと、SSL証明書がインストールされているにもかかわらず、ブラウザに警告が表示されます。 これを防ぐには、すべてのトラフィックを安全でないHTTPバージョンから安全なHTTPSバージョンに強制する必要があります。 これは、次のコードを追加することで、.htaccessファイルを使用して非常に簡単に実行できます。

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

IPアドレスをブロックする

スパムトラフィックを受信して​​いる場合、またはWebサイトが特定のIPアドレスからの悪用/ハッキングの試みに苦しんでいる場合は、.htaccessファイルの次のコードを使用してそのIPアドレスからのトラフィックをブロックすることにより、.htaccessファイルを使用してアクションを実行できます。

 Deny from 94.66.58.135

他の方法でIPアドレスをブロックする方法を知りたい場合は、このガイドをお読みください。

画像のホットリンクを防ぐ

画像のホットリンクとは、誰かがあなたのWebサイトの画像を自分のWebサイトに埋め込む場所です。 これは、サーバーが他の誰かのWebサイトに画像を提供するために残業する可能性があることを意味するため、(著作権の観点からだけでなく)問題になる可能性があります。 .htaccessファイルを使用して、次のコードを使用して誰かがWebサイトに画像を埋め込むのをブロックすることでこれを停止できます。

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

'mycompanyname.com'をあなたのウェブサイトのURLに置き換えることを忘れないでください!

このコードは、すべてのWebサイトがサイト上の画像をホットリンクするのをブロックします。 検索エンジンが画像をホットリンクするのを止めたくないので、手動でこれらをホワイトリストに登録する必要があります。 これを実現するコードのセクションは、次の部分です。

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

もちろん、ホワイトリストに登録したい他のWebサイトを含めることができます。 最後に、コードの最後の行( RewriteRule .(jpg|jpeg|png|gif)$ - [F] )は、ブロックされるメディアタイプを示します。

プラグインとテーマファイルを保護する

プラグインとテーマのPHPファイルは、悪意のあるコードを挿入しようとするハッカーの標的になることがあります。 次のコードを使用して、.htaccessファイルを使用してこれらのファイルへのアクセスを防ぐことができます。

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

WordPressコアファイルを保護する

管理者以外のユーザーが一部のWordPressコアファイルにアクセスできないようにすることを強くお勧めします。 これはほとんどのホスティングプロバイダーがあなたのために世話をするものですが、常にそうであるとは限りません。 機密性の高いWordPressファイルへのアクセスを防止したい場合は、.htaccessファイルで次のコードを使用できます。

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

悪いボットがあなたのウェブサイトをクロールするのを防ぎます

ボットは基本的に自動化されたWebスクリプトであり、1日に何百万ものWebサイトをスキャンできます。 Googleはボットを使用してウェブサイトをスキャンし、これらのスキャンからデータを取得して大規模な検索データベースを更新します。 うまくいけば、Googleボットは完全に無害です! あなたがあなたのウェブサイトをスキャンしたくないかもしれないけれども他のボットがあります。 これらの「悪い」ボットの中には、不要なサーバー帯域幅を消費するだけで、他のボットがWebサイトの悪用可能な弱点を積極的に検索している場合があります。 .htaccessファイルを使用して、これらの「悪い」ボットをブロックできます。

最初に見つけることは、どのボットをブロックしたいのかということです。 すでに知っているかもしれませんが、そうでない場合は、疑わしいと見なされるブラックリストに登録されたボットの更新されたリストを確認できます。 リストができたら、次のように.htaccessファイルに追加できます。

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

変更を保存した後、現在Webサイトにアクセスしているリスト上のボットは403Forbiddenページを取得します。

wp-config.phpを保護する

一般に、wp-config.phpファイルにはデータベースアクセス資格情報が含まれているため、アクセスを制限することをお勧めします。

.htaccessを介してこれを行うには、次の行をコピーして.htaccessファイルに貼り付けます。

 <files wp-config.php>order allow,denydeny from all</files>

PHPの実行を無効にする

ハッキングの試みから保護するための非常に効率的な方法は、PHPが不要な特定のディレクトリで実行されないようにすることです。 たとえば、 /wp-includes/および/wp-content/uploads/ディレクトリは、サーバーへの不正アクセスを許可するコード(バックドアファイルと呼ばれる)を配置するためにハッカーが使用する一般的な場所です。 これらのディレクトリでPHPの実行を無効にしても、これらのファイルは消去されませんが、代わりにコードの実行が停止されます。 これを行うには、次のコードを.htaccessファイルに追加します。

 <Files *.php>deny from all</Files>

また、Pressidiumを含む多くのホスティングプロバイダーは、顧客のセキュリティレベルを強化するために、これらのディレクトリでPHPの実行をデフォルトで無効にしていることがわかります。

XML-RPCアクセスを無効にする

これは、WordPressインストールが単一または複数のIPアドレスからの攻撃に関連することが多い何千もの「POST/xmlrpc.phpHTTP/1.1」リクエストを受信して​​いるホスティング会社のサポートチームによく見られる問題です。 これに対する1つの解決策は、XML-RPCを無効にすることです。

WebサイトでXML-RPCを無効にするには、次のコード行をoyur.htaccessファイルに追加します。

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

モバイルアプリまたはリモート接続を使用してコンテンツを更新する場合は、xmlrpc.phpが必要であることに注意してください。 したがって、永続的に無効にすることを検討している場合は、作業に不要であることを確認してください。

ファイルを強制的にダウンロードする

Webサイトからファイル(PDFなど)をダウンロードするときに、代わりにファイルがブラウザウィンドウで開くことは、Webサイトユーザーにとって非常に煩わしい場合があります。 ユーザーにダウンロード可能なアイテムとして提供されているファイルがWebサイトにある場合は、.htaccessファイルを編集して、特定のファイルタイプを強制的にダウンロードし、ブラウザー内から直接表示しないようにするコード行を追加できます。 このコードと、ユーザーが直接ダウンロードできるようにするファイルタイプの例を以下に示します。

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

カスタムHTTPヘッダーを送信する

上級ユーザーは、ApacheのHeaderディレクティブを利用して顧客のHTTPヘッダーを送信できるようにしたい場合があります。 これを行うには、次のコードを.htaccessファイルに追加します。

 Header add my-custom-header "my custom header value"

上記の例では、サーバーへのすべてのリクエストに対して「my-custom-header」という名前のヘッダーを追加するようにApacheに指示します。 この更新を実装してから、ブラウザのツールの[ネットワーク]タブを確認すると、次のように応答を確認できます。

私のカスタムヘッダー

この手法は、キャッシュヘッダーとセキュリティヘッダーを追加したり、言語文字セットを追加したりする場合に非常に一般的です。 いくつかの一般的な使用法については、この記事をご覧ください。 このリストには、実験できるヘッダーの詳細なリストもあります。

結論

この記事が、.htaccessファイルで達成できることについての洞察を与えてくれることを願っています。 確かに、これらのことの多くはプラグインを使用して実現できますが、特にプラグインが期待どおりに動作しない場合は、「内部で」何が起こっているのかを正確に理解することは常に役立ちます。 プラグインに頼るのではなく、.htaccessファイルを編集する方法を習得することも、WordPressの専門知識のレベルを高めるのに役立ちます…そしてそれは常に良いことです!