web-dev-qa-db-ja.com

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

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

私はこれを可能にするメンテナンスモードプラグインを知りません。せいぜい、カスタムHTML/CSSコードを書くことができます。

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

まず、I 無効化された正規リダイレクト

その後、私は使用しようとしました:

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をリ​​ダイレクトのルールから除外できる場合は、さらに歓声が上がります。

10
dgraziotin

あなたは実際に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;
} );
15
shea

私は@sheaによって受け入れられた答えを1ファイルのプラグインに埋め込み、2つのオプションを追加しました:管理者以外のユーザーだけをリダイレクトする&任意のURLにリダイレクトします。

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

オプション

プラグインのオプションはとても簡単です。当分の間、それらはプラグインファイルにハードコードされていますが、もし私たちがそれを要求すればオプションページを作ることを考えるかもしれません:

  • DESTINATION_URL :ユーザーのリダイレクト先の完全なURL。 Webサイトドメイン外のページにすることができます。
  • 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つを検討するかもしれません。

あなたがプラグインの実行に問題があるかどうか私に知らせてください。

もっと簡単な解決策を選びます。私の仮定は、あなたが誰かにただ一つのページだけを見ることを望み、あなたのドメインに対するどんな要求に対しても_ ​​WPページが見えることは必要ないということです。

それでは、HTMLページを作成し、CSSでスタイルを設定し、そのページをホスティングプラットフォームの別のフォルダに配置してください。ページがあなたが望むように見えることを確認してください。

それからあなたのドメインをその新しいフォルダに向けてください。ほとんどのホスティングプラットフォームでは、ドメインのベースフォルダを指定できます。だからあなたのドメインはその新しいベースフォルダを指す。複雑なhtaccessリダイレクト、WPプラグイン、またはWPに接続するための特別なフィルタは不要です。

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

あなたのドメイン上のどのページへのリクエストに対しても、開催地に「グローバルリダイレクト」があるかもしれません。

どちらの方法でも、ドメイン全体に1つのページしかないというニーズに対する単純な解決策になります。

あなたが本当にhtaccessソリューションを望むならば、これを使いなさい:

RewriteEngine on

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

..あなたの実際のドメインとの置き換え。またSEOを幸せにします。

0
Rick Hellewell