質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

17334閲覧

WordPressの管理画面へのアクセスはリダイレクトさせないようにしたい

u_s_y

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

1グッド

0クリップ

投稿2016/04/21 05:24

編集2016/04/21 05:25

###実現したいこと
wordpressで構築しているサイトを別サイトに301リダイレクトしています。
ただ、リダイレクト前のサイトの管理画面にはアクセスできるようにしておきたいのですが、
うまく実現できません。
RewriteCondを記述して除外できないかと試しているのですが、リダイレクト先のwp-adminへ
リダイレクトされてしまいます。
どのように記述すれば管理画面へのリダイレクトは除外できるのでしょうか。ご教授いただけると幸いです。

###現状のhtaccessのコード

<Files ~ "^\.ht"> deny from all </Files> # Redirect RewriteEngine On # base path RewriteBase / RewriteCond %{REQUEST_URI} !^/wp-admin/ RewriteRule ^(.*)$ リダイレクト先URL/$1 [R=301,L]
ayaneko👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

3

ベストアンサー

wp-login.phpwp-adminへのアクセスを制限するために私が利用している記述を少し変えただけのものですが、よろしければ一度試してみてください。

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # リファラーが正しいかどうかを念の為にチェック(ドメインは書き換えてください) RewriteCond %{HTTP_REFERER} ^http://(.*)?your-domain\.com [NC] # (ログインできるように)ログイン画面または RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php(.*)$ [OR] # 管理画面ではない場合 RewriteCond %{REQUEST_URI} !^(.*)?wp-admin$ # リダイレクト(リダイレクト先は書き換えてください) RewriteRule ^(.*)$ http://redirect-domain.com/$1 [R=301,L] </ifModule>

追記
私が最初に回答した時の記述が正しく動作しないものだったので修正したものを追記しました。
実際に検証してみましたが、私の環境では問題なく動作しているのでおそらくこれで大丈夫だと思います。
(http:/0.0.0.0/はご自身の環境に合わせて書き換えてください)

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php RewriteCond %{REQUEST_URI} !^(.*)?wp-admin RewriteRule ^(.*)$ http://0\.0\.0\.0\/$1 [R=301,L] </ifModule>

投稿2016/04/21 14:27

編集2016/07/08 02:54
flat

総合スコア617

donmaru, ayaneko👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_s_y

2016/04/22 00:38

ありがとうございます。試させていただきましたが、やはり管理画面へのリダイレクトは切れませんでした。
flat

2016/04/22 03:38 編集

Chromeのシークレットモードでwp-login.phpにアクセスはできますか? また、アクセスができた場合はログインを試みてどのような結果になるか確認してみて下さい。 追記 WordPressのインストール先は wordpress/ などのサブディレクトリではなくドメイン直下のルートディレクトリですか? さらに追記 回答を更新しました。
u_s_y

2016/04/26 08:53

追記いただいたコードで管理画面へのアクセスができるようになりました! ありがとうございました。 またChromeのシークレットモードでのアクセスは試しておりません…すいません。 WordPressのインストール先はドメイン直下にインストールしておりました。またSSL対応しておりましたので、全てhttpsに置換してコードを記述しました。
flat

2016/04/26 10:01 編集

解決されたようで何よりです。 ちなみに、今回はwp-adminディレクトリへのアクセス時に発生するリダイレクトを考慮して、wp-adminディレクトリ以下とwp-login.phpへのアクセスの両方を、付加される?以降のクエリも含めて除外する記述にしておかなければいけないというのがポイントだったように思います。 今回は知識不足による誤りに私自身も気付くことができて助かりました。 ありがとうございました。
guest

0

こんにちは。

特定のディレクトリをリダイレクトから穣害するために、ひろく用いられている方法と、少々変則的な方法のふたつを紹介させていただきます。

1)ルートディレクトリのみに「.htaccess」を配置する方法

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !(^/wp-admin/) RewriteRule ^$ リダイレクト先URL/ [R=301,L]

2)ルートディレクトリと除外したいディレクトリのそれぞれに「.htaccess」を配置する方法

まず、ルートディレクトリに

RewriteEngine on RewriteBase / RewriteRule (.*) リダイレクト先URL/$1 [R=301,L]

と記述した「.htaccess」を配置する。

つづいて、wp-admin フォルダ内に

RewriteEngine off

と記述した「.htaccess」を配置する。

以上、ご参考いただければ幸いです。

投稿2016/04/23 02:16

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

WP関連ファイルは全体的に除外する必要が在るのではないでしょうか。

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/wp-admin/ RewriteCond %{REQUEST_URI} ^/wp-content/ RewriteCond %{REQUEST_URI} ^/wp-includes/ RewriteCond %{REQUEST_URI} ^/.htaccess #RewriteCond %{REQUEST_URI} ^/index.php RewriteCond %{REQUEST_URI} ^/info.php RewriteCond %{REQUEST_URI} ^/license.txt RewriteCond %{REQUEST_URI} ^/readme.html RewriteCond %{REQUEST_URI} ^/readme-ja.html RewriteCond %{REQUEST_URI} ^/wp-activate.php RewriteCond %{REQUEST_URI} ^/wp-blog-header.php RewriteCond %{REQUEST_URI} ^/wp-comments-post.php RewriteCond %{REQUEST_URI} ^/wp-config.php RewriteCond %{REQUEST_URI} ^/wp-config-sample.php RewriteCond %{REQUEST_URI} ^/wp-cron.php RewriteCond %{REQUEST_URI} ^/wp-links-opml.php RewriteCond %{REQUEST_URI} ^/wp-load.php RewriteCond %{REQUEST_URI} ^/wp-login.php RewriteCond %{REQUEST_URI} ^/wp-mail.php RewriteCond %{REQUEST_URI} ^/wp-settings.php RewriteCond %{REQUEST_URI} ^/wp-signup.php RewriteCond %{REQUEST_URI} ^/wp-trackback.php RewriteCond %{REQUEST_URI} ^/xmlrpc.php RewriteRule ^(.*)$ リダイレクト先URL/$1 [R=301,L]

追記:

WordPress 側でリダイレクトしてしまうとか。

functions.php

PHP

1function load_script() { 2 if ( !( is_admin() 3 || is_blog_admin() 4 || is_user_admin() 5 || is_network_admin() 6 || is_404() 7 || is_preview() 8 ) && ( 9 is_home() 10 || is_front_page() 11 || is_archive() 12 || is_category() 13 || is_tag() 14 || is_tax() 15 || is_author() 16 || is_date() 17 || is_year() 18 || is_month() 19 || is_day() 20 || is_time() 21 || is_post_type_archive() 22 || is_search() 23 || is_singular() 24 || is_single() 25 || is_page() 26 || is_attachment() 27 || is_page_template() 28 || is_paged() 29 ) 30 ) { 31 header ( 'HTTP/1.1 301 Moved Permanently' ); 32 header ( 'Location: '.'http://リダイレクト先URL'.$_SERVER['REQUEST_URI'] ); 33 exit(); 34 } 35} 36add_action( 'init', 'load_script' );

投稿2016/04/21 09:57

編集2016/04/22 04:28
kei344

総合スコア69355

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_s_y

2016/04/21 10:14

ご回答いただきありがとうございます。 早速試してみたのですが、リダイレクトが効かず、普通にサイトが表示されてしまいました。 どの行がリダイレクトを無効にしているのか、コメントアウトしながら試しましたが、1つでも効いているとリダイレクトが無効になってしまうようでした。
flat

2016/04/21 10:41 編集

To: u_s_y 横から失礼致します。 質問内容とは異なる内容なのですが、少し気になったので一応コメントしておきます。 本題ですが、301リダイレクトはブラウザによってはリダイレクトがキャッシュされてしまいます。 ブラウザのキャッシュを破棄しない限りは書き換える前のリダイレクトが有効な状態になっているので、一度キャッシュを破棄して確認してみてください。 301リダイレクトはこれに気付かずにハマる事が結構あります。 追記 回避策としてはヘッダーにキャッシュしない設定を追加すると良いと思います。 http://d.hatena.ne.jp/too_young/20110303/1299149420 また、302リダイレクトはキャッシュされないようなので、テスト時は302リダイレクトにした方が良いかもしれません。
kei344

2016/04/21 10:48

To: u_s_y WordPress側でリダイレクトする方法を追記しました。 To: flat たしかにキャッシュの可能性もありますね。
u_s_y

2016/04/21 13:49

To: flat キャッシュの件、助言いただきありがとうございます。 Chromeで検証を行っており、自分も検証中にキャッシュによりコメントアウトが効いていないことを確認していたので、デベロッパーツールでキャッシュをクリアしながら確認しておりました。キャッシュの可能性は低いのではないかと思っております。 To:kei344 追記いただいたphpのコードを流用させていただき、確認しました。 リダイレクトは確かに効いていますが、管理画面へのリダイレクトも変わらず効いたままでした…。
kei344

2016/04/21 14:35

> 管理画面へのリダイレクトも変わらず効いたままでした…。 .htaccess のリダイレクトの記述は外しましたか?併用できない旨書き忘れていました、すいません。
u_s_y

2016/04/22 00:37

.htaccessのリダイレクト記述も外して試しました…。やはりだめなようです…。
kei344

2016/04/22 04:32

ちょっと修正しました。 サイト構成がわからないため、これ以上はちょっと解らないかもしれません。 また、別ディレクトリにWPの構成ファイルをすべて置き、そこのみ.htaccessで転送しないようにして、現在のWPとDBを同じものを使うことで運用する方法なども一応考えられます。 ただ、リダイレクトが正常に行かない場合同じですが。
u_s_y

2016/04/26 08:54

修正ありがとうございます。 いただいたコードを試してみたのですが、管理画面のリダイレクトは切れませんでした。 何度もご助言いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。