実現したいこと
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]
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+3
wp-login.php
とwp-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>
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
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
function load_script() {
if ( !( is_admin()
|| is_blog_admin()
|| is_user_admin()
|| is_network_admin()
|| is_404()
|| is_preview()
) && (
is_home()
|| is_front_page()
|| is_archive()
|| is_category()
|| is_tag()
|| is_tax()
|| is_author()
|| is_date()
|| is_year()
|| is_month()
|| is_day()
|| is_time()
|| is_post_type_archive()
|| is_search()
|| is_singular()
|| is_single()
|| is_page()
|| is_attachment()
|| is_page_template()
|| is_paged()
)
) {
header ( 'HTTP/1.1 301 Moved Permanently' );
header ( 'Location: '.'http://リダイレクト先URL'.$_SERVER['REQUEST_URI'] );
exit();
}
}
add_action( 'init', 'load_script' );
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
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」を配置する。
以上、ご参考いただければ幸いです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/04/22 09:38
2016/04/22 09:59 編集
また、アクセスができた場合はログインを試みてどのような結果になるか確認してみて下さい。
追記
WordPressのインストール先は wordpress/ などのサブディレクトリではなくドメイン直下のルートディレクトリですか?
さらに追記
回答を更新しました。
2016/04/26 17:53
ありがとうございました。
またChromeのシークレットモードでのアクセスは試しておりません…すいません。
WordPressのインストール先はドメイン直下にインストールしておりました。またSSL対応しておりましたので、全てhttpsに置換してコードを記述しました。
2016/04/26 18:22 編集
ちなみに、今回はwp-adminディレクトリへのアクセス時に発生するリダイレクトを考慮して、wp-adminディレクトリ以下とwp-login.phpへのアクセスの両方を、付加される?以降のクエリも含めて除外する記述にしておかなければいけないというのがポイントだったように思います。
今回は知識不足による誤りに私自身も気付くことができて助かりました。
ありがとうございました。