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ファイルで使用できる設定がありますか?
これがワードプレスのサイトの記事です。
http://wordpress.org/support/topic/how-to-change-the-admin-url-or-wp-admin-to-secure-login
Wp-config.phpに定数を追加します
define('WP_ADMIN_DIR', 'secret-folder');
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);
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);
}
以下の行を.htaccessファイルに追加します
RewriteRule ^secret-folder/(.*) wp-admin/$1?%{QUERY_STRING} [L]
私はこれをいじってみましたが、以下のこの単純な関数でこれをすべて簡単に行う方法があります。他の何かをいじる必要はありません(不要なフォルダー、リダイレクト、ページなどを作成する)。
// 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');
これは非常に役立つトピックです。関数を少し修正しましたが、これが私のバージョンです。
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
ルールを更新します。
/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
のためにいくつかのコードを変更しなければなりませんでした。
セキュリティで保護された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ファイルにさらにエラーが記録されます。不明な理由。
最後にプラグインなしでそれを行う方法を見つけました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の呼び出しが上記で動作するかどうかわからない、あなたがそれを試したかどうかを教えてください