CMS로만 사용하도록 프런트 엔드를 비활성화 하시겠습니까?


18

밴드 웹 사이트의 뉴스를 관리하기 위해 WordPress 데이터베이스와 백엔드를 사용하고 있으며 모든 것이 잘 작동하지만 WordPress 자체의 프런트 엔드를 비활성화하고 싶습니다.

WordPress 설치가 설치되어 /wordpress/있고 분명히 관리자 섹션이 아래에 /wordpress/wp-admin/있습니다.

관리자 섹션에 영향을주지 않고 다소 * un * setup WordPress 사이트 자체에 액세스하지 못하도록 제한하는 가장 좋은 방법은 무엇입니까?

어떤 것이라도 웹 사이트의 올바른 홈페이지 ( domain.com/)로 리디렉션 할 수 있습니다.

답변:


19

프론트 엔드 만로 리디렉션되도록 domain.com하려면 PHP header () 함수를 사용하는 테마를 만드십시오.

  • 리디렉션 등의 폴더를 만듭니다.
  • 폴더에 두 개의 파일 추가 : style.cssindex.php (유효한 WP 테마에 필요)
  • 에서 style.css다음과 같이 추가하십시오.

    / *
    테마 이름 : 리디렉션
    설명 : 프런트 엔드를 domain.com으로 리디렉션합니다.
    * /

  • 이것을 index.php추가하십시오 :

    header ( "위치 : http://domain.com ");

  • 테마 디렉토리에 폴더를 업로드 한 후 관리 UI에서 폴더를 활성화하십시오.

빛이 머릿속에서 사라진 것은 재미있는 원인입니다. 리디렉션되는 테마 만 만드세요! 감사.
Nick Bedford

1
일부에게는 명백 할 수도 있지만 index.php의 첫 줄이 <?php
finsbury

8

"빈 데이터"가있는 테마를 사용하십시오. 두 개의 파일을 디렉토리에 넣고 "테마"를 활성화하십시오.

style.css

/*
Theme Name: turn off frontend
Theme URI: 
Description: 
Author: 
Version: 
License: GNU 
License URI: 
Tags:
*/

index.php

<?php
exit;

나는이 솔루션을 좋아한다. 이렇게하면 전체 작업 테마로 쉽게 다시 전환 할 수 있습니다. 또한 <?php wp_redirect(site_url('wp-admin'));die();종료 대신 자동으로 지정된 리소스로 리디렉션하는 것과 같은 것을 추가 할 수 있습니다 .
MiCc83

3

이것을 .htaccess에 넣고 사용 가능한 경로를 나열하십시오.

RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-includes
RewriteCond %{REQUEST_URI} !^/wp-login
RewriteCond %{REQUEST_URI} !^/wp-content/uploads
RewriteCond %{REQUEST_URI} !^/wp-content/plugins
RewriteCond %{REQUEST_URI} !^/wp-content/cache
RewriteRule (.*) http://yournewdomain.com/ [R=301,L]

2

이것을 루트 디렉토리의 .htaccess에 추가하십시오.

redirect 301 /wordpress http://www.domain.com

편집 : 이것은 실제로 빠른 해결 방법입니다. 더 나은 솔루션이있을 수 있습니다. 다른 방법은 functions.php 파일에 함수를 추가 한 다음 wp_head ()에서 호출하여 해당 방식으로 리디렉션하는 것입니다. 이 방법을 사용하면 간단한 IP 확인으로 볼 수 있습니다.


이것은 /wordpress/wp-admin이제 다음으로 리디렉션 되는 부작용이 있습니다.//wp-admin
Nick Bedford

1

이것은 이미 받아 들여진 대답이있는 다소 오래된 질문이지만 특히이 솔루션 중 어느 것도 나를 위해 일한 것이 없기 때문에 누군가가 유용하다고 생각할 수 있습니다.

function redirect_to_backend() {
    if( !is_admin() ) {
        wp_redirect( site_url('wp-admin') );
        exit();
    }
}
add_action( 'init', 'redirect_to_backend' );

코드 자체는 매우 설명 적입니다.

  • '초기'후크에서 검사를 실행하십시오.
  • 우리가로드하는 페이지가 프론트 엔드인지 확인하십시오 (wp-admin 아님)
  • 백엔드로 리디렉션 (wp-admin)

플러그인이나 테마의 function.php에 코드를 넣으면 즉시 작동합니다.

편집하다:

이것이 효과가 없다면 (이 코드에서도 사소한 문제가 발생했습니다) 새로운 테마 (또는 자식 테마)를 만들고이 내용 만 header.php파일 안에 넣을 수 있습니다.

<?php
header("Location: ".get_admin_url());
exit();

0

플러그인 인 IMO는 작업이 덜 필요하며 특정 경우에 더 적합합니다.

<?php
/*
Plugin Name: Disalbe Frontend
Description:  Disable the frontend interface of the website, leave only CMS and REST API
Author: Nikola Mihyalov
Version: 1.0
*/

add_action('init', 'redirect_to_backend');

function redirect_to_backend() {
    if(
        !is_admin() &&
        !is_wplogin() &&
        !is_rest()
    ) {
    wp_redirect(site_url('wp-admin'));
    exit();
  }
}


if (!function_exists('is_rest')) {
    /**
     * Checks if the current request is a WP REST API request.
     * 
     * Case #1: After WP_REST_Request initialisation
     * Case #2: Support "plain" permalink settings
     * Case #3: URL Path begins with wp-json/ (your REST prefix)
     *          Also supports WP installations in subfolders
     * 
     * @returns boolean
     * @author matzeeable
     */
    function is_rest() {
        $prefix = rest_get_url_prefix( );
        if (defined('REST_REQUEST') && REST_REQUEST // (#1)
            || isset($_GET['rest_route']) // (#2)
                && strpos( trim( $_GET['rest_route'], '\\/' ), $prefix , 0 ) === 0)
            return true;

        // (#3)
        $rest_url = wp_parse_url( site_url( $prefix ) );
        $current_url = wp_parse_url( add_query_arg( array( ) ) );
        return strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
    }
}

function is_wplogin(){
    $ABSPATH_MY = str_replace(array('\\','/'), DIRECTORY_SEPARATOR, ABSPATH);
    return ((in_array($ABSPATH_MY.'wp-login.php', get_included_files()) || in_array($ABSPATH_MY.'wp-register.php', get_included_files()) ) || (isset($_GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') || $_SERVER['PHP_SELF']== '/wp-login.php');
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.