ワードプレスのログインURLを変更したいです。
ログイン用のanywhere-login.phpを用意して、以下の方法で変えましたが、ログインしていた時にFTPであげると無事ログインできるのですが、キャッシュ等を消してしまうとログインできなくなります。
プラグインも使用してみましたが、
希望のURLでログイン画面は出るのですが、パスワード等を入力した後、403の画面に遷移します。
キャッシュクリアしてもログインを可能にするにはどうしたら良いのでしょうか?
また、私以外の人がログインしようとしても403エラーが出てくるのですが、どのように変更すると良いのでしょうか?
よろしくお願いいたします。
現在はanywhere-login.phpの内容のみFTPであげていて、URL/anywhere-login/でログイン画面があり無事入れますが、URL/wp-admin/でも同様に入れてしまいます。
変更点
//login.phpの内容
php
1<?php 2define( 'ANYWHERE_LOGIN', sha1( 'keyword' ) ); 3require_once './wp-login.php'; 4?> 5
//function.phpに追記
php
1define( 'ANYWHERE_LOGIN_PAGE', 'anywhere-login.php' ); 2add_action( 'login_init', 'anywhere_login_init' ); 3add_filter( 'site_url', 'anywhere_login_site_url', 10, 4 ); 4add_filter( 'wp_redirect', 'anywhere_login_wp_redirect', 10, 2 ); 5if ( ! function_exists( 'anywhere_login_init' ) ) { 6 function anywhere_login_init() { 7 if ( !defined( 'ANYWHERE_LOGIN' ) || sha1( 'keyword' ) != ANYWHERE_LOGIN ) { 8 status_header( 403 ); 9 exit; 10 } 11 } 12} 13if ( ! function_exists( 'anywhere_login_site_url' ) ) { 14 function anywhere_login_site_url( $url, $path, $orig_scheme, $blog_id ) { 15 if ( ( $path == 'wp-login.php' || preg_match( '/wp-login.php?action=\w+/', $path ) ) && 16 ( is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], ANYWHERE_LOGIN_PAGE ) !== false ) ) 17 $url = str_replace( 'wp-login.php', ANYWHERE_LOGIN_PAGE, $url ); 18 return $url; 19 } 20} 21if ( ! function_exists( 'anywhere_login_wp_redirect' ) ) { 22 function anywhere_login_wp_redirect( $location, $status ) { 23 if ( strpos( $_SERVER['REQUEST_URI'], ANYWHERE_LOGIN_PAGE ) !== false ) 24 $location = str_replace( 'wp-login.php', ANYWHERE_LOGIN_PAGE, $location ); 25 return $location; 26 } 27}
####追加情報
他のレンタルサーバーで全く同じサイトをテストサイトとして作成しており、そちらで試したところ同様のファイルで問題なくいけました。
つまり、本番サーバーの方だけがはじかれてしまうようです。
テストはXserverで本番はlolipopです。
プラグインも3つほど試しましたが、どれもダメでした。
1つ目はhttps://elearn.jp/wpman/column/login-rebuilder.html ログイン画面は表示されるが入れず
2つ目はSiteGuard WP Plugin URLの変更ができずログイン画面が表示されない
3つ目はWPS Hide Login 下記エラーのためプラグイン自体を有効にできず
Warning: Unexpected character in input: '' (ASCII=92) state=1 in サイトURL/wp-content/plugins/wps-hide-login/wps-hide-login.php on line 37
Warning: Unexpected character in input: '' (ASCII=92) state=1 in サイトURL/wp-content/plugins/wps-hide-login/wps-hide-login.php on line 37
Parse error: syntax error, unexpected T_STRING in サイトURL/wp-content/plugins/wps-hide-login/wps-hide-login.php on line 37