Webサイト全体を単一のページにリダイレクトする


10

WordPressサイト全体を単一のWordPressページにリダイレクトする必要があります。一種のメンテナンスモードですが、リダイレクトは公開されたWordPressページに移動する必要があります。残念ながら、表示する必要があるメンテナンスページは、他のWordPressプラグインを使用する必要があります。

これを可能にするメンテナンスモードプラグインについては知りません。ほとんどの場合、カスタムHTML / CSSコードを記述できます。

.htaccess mod_rewriteルールについて考えていました。ただし、私はmod_rewriteが非常に苦手です。

最初に、正規リダイレクト無効にしました

次に、私は使用しようとしました:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

ただし、これらのルールはリダイレクトループを生成します。page_id=813もちろん、私のメンテナンスページのIDです。

公開されたページにリダイレクトするメンテナンスモードプラグインを知っている人はいますか?

あるいは、誰かがmod_rewriteルールを修正するのを手伝ってくれる?/wp-adminリダイレクトルールを省略できる場合は、さらに応援してください。

回答:


14

これは実際には、WordPressの内部から行うことができます。混乱を招き、高度に設計された.htaccessの修正を思い付く必要はありません。

template_redirectフロントエンドでのみ起動するフィルターにフックできます(wp-adminでは不可)。次に、このis_page()関数を使用して、IDが813のページを表示しているかどうかを確認します。そうでない場合は、wp_redirect()関数を使用してそのページにリダイレクトします。

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

302の「一時的な」HTTPヘッダーを使用してリダイレクトが行われ、ボットと検索エンジンにサイトが間もなく稼働することを通知するため、これはメンテナンスモードに最適です。ただし、サイトを恒久的に移動する場合は、301の「永続的な」HTTPヘッダーをリダイレクトに使用することをお勧めします。これを行うには、wp_redirect関数に2番目のパラメーターを追加します。例:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );

これは私の目的にも最適です。ひねりを加えることを除いて-サイトは永久に「ダウン」しており、WPを稼働させて、さようならページをホームページとして提供したいと考えています。このタイプのSEOのリダイレクトに301ヘッダーを追加する方法はありますか?
Tapefreak 2013年

@Tapefreak HTTPヘッダーをwp_redirect関数の2番目のパラメーターとして設定できます。例:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
shea

1

@sheaによる承認済みの回答を1ファイルプラグインに埋め込み、2つのオプションを追加しました。非管理者ユーザーのみをリダイレクトすることと、任意のURLにリダイレクトすることです。

興味がある場合は、Github => https://github.com/Idearia/wp-redirect-website-to-urlからプラグインをダウンロードしてください

オプション

プラグインオプションは非常にシンプルです。とりあえず、それらはプラグインファイルにハードコードされていますが、人々がそれを要求する場合は、オプションページを作成することを検討します。

  • DESTINATION_URL:ユーザーをリダイレクトする完全なURL。ウェブサイトのドメイン外のページにすることができます。
  • DESTINATION_URL_ID:リダイレクトURLがWordPressページまたは投稿である場合、ここでそのWordPress IDを指定します。
  • USER_CAPABILITY:この機能を持つユーザーはリダイレクトされません。全員をリダイレクトするには空白のままにします。デフォルトは「manage_options」で、管理ユーザーに対して有効になっています。
  • REDIRECT_STATUS_CODE:リダイレクトステータス:一時的なリダイレクトの場合は302、永続的なリダイレクトの場合は301。
  • DEBUG:debug.logにデバッグ情報を出力するかどうか。

Githubページの情報を更新=> https://github.com/Idearia/wp-redirect-website-to-url

プラグインは非常に基本的なものであることに注意してください。より上級のユーザーは、WordPress.orgプラグインリポジトリで利用可能な多くのメンテナンスプラグインの1つを代わりに検討するかもしれません。

プラグインの実行に問題がある場合はお知らせください😊


0

もっと簡単な解決策を探します。私の想定では、ドメインへのリクエストに対して、誰にも1つのページだけを表示し、WPページを表示する必要はありません。

それでは、HTMLページを作成し、CSSでスタイルを設定して、そのページをホスティングプラットフォームの別のフォルダーに配置してみてください。ページが希望どおりであることを確認します。

次に、ドメインをその新しいフォルダにポイントします。ほとんどのホスティングプラットフォームでは、ドメインのベースフォルダを指定できます。そのため、ドメインをその新しいベースフォルダにポイントします。複雑なhtaccessリダイレクト、WPプラグイン、またはWPに接続するための特別なフィルターは必要ありません。

または、現在のドメインルートフォルダからすべてのコンテンツを移動し、その場所に単純なHTMLファイルを配置することもできます。

ホスティングプレースには、ドメイン上の任意のページへのリクエストに対する「グローバルリダイレクト」もある場合があります。

どちらの方法も、ドメイン全体に対して1つのページのみを持つというニーズに対する単純なソリューションになります。

htaccessソリューションが本当に必要な場合は、次のソリューションを使用してください。

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

..実際のドメインに置き換えます。SEOも幸せにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.