web-dev-qa-db-ja.com

変更Wordpress=管理URL

Wordpress=ディレクトリ構造をかなり変更しました。これが私が持っているものです:

define('WP_SITEURL', 'http://' . $_SERVER['SERVER_NAME'] . '/wordpress');
define('WP_HOME',    'http://' . $_SERVER['SERVER_NAME']);
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'http://' . $_SERVER['SERVER_NAME'] . '/content');

そのため、プラグインとテーマを含むcontentディレクトリがあります。そして、私はwordpressコアWPファイル、wp-contentフォルダーを除く)を含むディレクトリを持っています。

この新しい構造では、WPバックエンドにこのURLでアクセスする必要があります:http://site.dev/wordpress/wp-admin

次のようにアクセスできるように変更できる方法はありますか:http://site.dev/wp-admin

wordpressをURLに含めたくありません。これは作成する必要があるhtaccess更新でしょうか、それともwp-config.phpファイルで使用できる設定がありますか?

12
Drew

これがワードプレスのサイトの記事です。

http://wordpress.org/support/topic/how-to-change-the-admin-url-or-wp-admin-to-secure-login

  1. Wp-config.phpに定数を追加します

    define('WP_ADMIN_DIR', 'secret-folder');  
    define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);  
    
  2. Functions.phpに以下のフィルターを追加します

    add_filter('site_url',  'wpadmin_filter', 10, 3);  
    
    function wpadmin_filter( $url, $path, $orig_scheme ) {  
        $old  = array( "/(wp-admin)/");  
        $admin_dir = WP_ADMIN_DIR;  
        $new  = array($admin_dir);  
        return preg_replace( $old, $new, $url, 1);  
    }
    
  3. 以下の行を.htaccessファイルに追加します

    RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]
    
18
jbrahy

私はこれをいじってみましたが、以下のこの単純な関数でこれをすべて簡単に行う方法があります。他の何かをいじる必要はありません(不要なフォルダー、リダイレクト、ページなどを作成する)。

// Simple Query String Login page protection
function example_simple_query_string_protection_for_login_page() {

$QS = '?mySecretString=foobar';
$theRequest = 'http://' . $_SERVER['SERVER_NAME'] . '/' . 'wp-login.php' . '?'. $_SERVER['QUERY_STRING'];

// these are for testing
// echo $theRequest . '<br>';
// echo site_url('/wp-login.php').$QS.'<br>';   

    if ( site_url('/wp-login.php').$QS == $theRequest ) {
        echo 'Query string matches';
    } else {
        header( 'Location: http://' . $_SERVER['SERVER_NAME'] . '/' );
    }
}
add_action('login_head', 'example_simple_query_string_protection_for_login_page');
3
Abu fateh

これは非常に役立つトピックです。関数を少し修正しましたが、これが私のバージョンです。

add_filter('site_url',  'wpadmin_filter', 10, 3);

 function wpadmin_filter( $url, $path, $orig_scheme ) {
    $request_url = $_SERVER['REQUEST_URI'];

    $check_wp_admin = stristr($request_url, 'wp-admin');
    if($check_wp_admin){
        wp_redirect( home_url( '404' ), 302 );
        exit();
    }

    $old  = array( "/(wp-admin)/");
    $admin_dir = WP_ADMIN_DIR;
    $new  = array($admin_dir);
    return preg_replace( $old, $new, $url, 1);
 }

主にwp-adminのリダイレクト用。

そして最も重要な部分:

add_rewrite_rule( '^' . 'backend/(.*)','wp-admin/$1?%{QUERY_STRING}' );

.htaccessルールを更新します。

2
OneByte

/wp-adminフォルダ(public_html/wordpress内)をpublic_htmlに移動し、WordPressの名前を変更して、動作することを確認しました。 = folder(私はwordpress_testを使用しましたが、何でも使用できます)、私のサイトexample.com/wp-adminにアクセスしました-example.com/wordpress/wp-adminにアクセスした場合と同じように機能しました。

WPが多数のファイル全体でwp-adminをコーディングしていたため、wp-adminを他の何かに変更することは非常に難しい唯一のことです。 nameはphpおよびその他のエラーの原因になります。

これを行うためにコーディングする必要はありませんでした。プラグインが私が望んでいたことをしなかったので、私はwp-adminのためにいくつかのコードを変更しなければなりませんでした。

1
Nicholas

セキュリティで保護されたwp-adminに対して非常に優れた戦術を保証する別の方法が1つあります。

同様に、おそらく「worksersneeded /」という独自のwp-admin名を持っている

私は自分のサイトの1つでそれを行いましたが、奇跡に陥りました。そこでは、プローブされたSSLサイトが、異なる地理的位置から私のサイトに対して異なる表示をしていました。

Notepad ++というツールをダウンロードする必要があります。 https://notepad-plus-plus.org/download/

ディレクトリ内の各ファイルで多くの作業を行う場合を除きます。

その後、WordPress=をフォルダーに抽出する必要があります。

次に、wp-adminを検索しながら、ディレクトリ内のすべてのファイルを編集します。次に、すべてのファイルを名前「workersneeded」または自分の名前に置き換えます。

メモ帳のように、「ファイルを検索」と入力して「検索対象」を入力します:wp-admin /

そして、「と置き換える」:労働者が必要/

次に、すべてのファイルを置き換えます。

すべての問題を監視するには、次の行もwp-config.phpに含める必要があります。

ini_set('log_errors',TRUE);
ini_set('error_reporting', E_ALL);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');

WordPressディレクトリでほとんど上書きし、wp-adminの名前が「workersneeded」になった後、ほとんどの場合、WordPressプラグインまたはテーマ。

そのため、それらをerror_log.txtファイルにログインする必要があります。

ファイル内のエラーを見つけた後。ほとんどの場合、wp-adminへの接続を試行する.phpファイルを編集する必要があります。これにより、wp-adminのファイル情報を管理フォルダーに置き換えることができます。

プラグインを再度ダウンロードし、上記と同じ手順をnotepad ++に置き換えることができます。これにより、すべてのプラグインを新しいフォルダー名で使用可能にできます。

次に、wpファイルマネージャープラグインを使用して、各プラグインのフォルダーをwp-contentディレクトリーにアップロードします。

WordPressを自動更新したり更新したり、WordPressの再インストールを行ったりすることはできません。毎回これらの置換を行う必要があります。

これは4.9.8バージョンのWordPressと最新の5.0.3で行われました

5.0.3では、error_log.txtファイルにさらにエラーが記録されます。不明な理由。

0
Dealazer

最後にプラグインなしでそれを行う方法を見つけましたAND WITH MODIFYING WP CORE(すべてのチュートリアルでは、何らかの奇妙な理由でそうすることを提案しています)。

1- _wp-login.php_をコピーし、名前を_new-secret-url.php_に変更します(ルートディレクトリ上)

2- _new-secret-url.php_ファイルを開き、_wp-login.php_から_new-secret-url.php_への検索/置換を実行します

3- functions.phpに次のコードを追加します。

_/** Hide default login */
add_action( 'init', 'marounmelhem_hide_login' );
function marounmelhem_hide_login() {

    //Only proceed for guests
    if ( ! is_user_logged_in() ) {

        //Getting current page
        $current_url   = str_replace( '/', '', $_SERVER['REQUEST_URI'] );
        $hiddenWpAdmin = 'new-secret-url'; //Change this to your new secret wp-admin url
        $redirectNaTo  = '/';

        //Checking if accessing correct login url
        if ( $current_url == $hiddenWpAdmin ) {
            wp_redirect( '/'.$hiddenWpAdmin.'.php' );
            exit;
        }

        //Only allow requests to wp-login.php coming from correct login url
        $adminToCheck = [
            'wp-admin',
            'wp-login.php'
        ];
        if (
            in_array( $current_url, $adminToCheck )
            &&
            $_GET['action'] !== "logout"
        ) {
            wp_redirect( $redirectNaTo );
            exit();
        }
    }
}
_

4-これは、他のフロントエンドログインフォームを使用していない場合にのみ機能します。使用している場合は、変更できます。

is_user_logged_in()から!current_user_can( 'subscriber' )(またはフロントエンドログインロジックで指定された役割)

5- ajaxの呼び出しが上記で動作するかどうかわからない、あなたがそれを試したかどうかを教えてください

0
Maroun Melhem