Como criar uma url em um wordpress que retornará o código 200?

Como criar uma url em um wordpress que retornará o código 200?

Isso é necessário porque preciso implementar um balanceador de carga no GCP para uma instância do Word Press.

O GCP só encaminhará uma solicitação para a instância do wordpress se ela passar no teste de integridade.

Aqui está uma definição típica de uma tela de verificação de integridade

insira a descrição da imagem aqui

Ele espera que o 'caminho da solicitação' retorne 200. Caso contrário, o sistema de destino será considerado inativo.

Porém se eu criar uma página no wordpress por exemplo /index.php/newpage, ela sempre retornará 301.

Enquanto o site wordpress está instalado e funcionando, ele falha na verificação de integridade.

Existe alguma maneira de definir uma página no wordpress que retornará 200? Espero que não exija plugin adicional porque eu gostaria de evitar a manutenção de plugin extra.

O último recurso para mim é adicionar um URL ao servidor php que retornará 200. No entanto, o status deste URL pode não refletir 100% a integridade do site wordpress (que pode cair devido a um problema no MySQL, por exemplo). Se for de facto o último recurso, qual é a melhor forma de o implementar? Não sou proficiente em desenvolvimento php.

A versão do wordpress é 4.6.2

Responder1

Você pode usar a página inicial de instalação do WordPress para a verificação de integridade. Este é o indicador mais confiável de que o site WordPress está disponível.

Responder2

Para constar, tive que configurar um site WordPress em um contêiner e fazer uma verificação de integridade para ter sucesso antes mesmo de conseguir direcionar o tráfego para ele. As sugestões para a "página inicial" funcionam somente APÓS a instalação do WordPress através do navegador. Antes disso, eles retornam um código de status 302 para /wp-admin/install.php. Eu vasculhei as pastas do contêiner e decidi usar /wp-includes/images/blank.gifcomo caminho de verificação de integridade. Isso permitiu que a verificação de integridade fosse bem-sucedida e o tráfego começasse a ser roteado para o contêiner. A partir daí instalei o WordPress através do navegador e consegui alterar o caminho da verificação de integridade de volta para /.

Responder3

Embora este seja um post antigo, gostaria de comentar porque este tópico ainda é relevante e a resposta aceita não é ideal no meu caso de uso. Eu não sugeriria que outros fizessem isso; especialmente para um sistema de alto tráfego.

Meu problema com a resposta aceita é que é sugerido usar a página inicial como verificação de integridade. Dependendo do seu site, isso pode ser bom, mas não vejo necessidade de o banco de dados ser consultado em uma verificação de integridade. Mesmo que a conexão com o banco de dados falhe, a instância ainda estará tecnicamente íntegra. por exemplo, se o seu cluster RDS cair, a página inicial mostrará um erro de banco de dados que fornecerá um erro 500para que você acione seu escalonamento automático sem necessidade. A verificação de integridade só precisa verificar o aplicativo e certificar-se de que está configurado corretamente.

Minha página inicial tem muitas consultas e a verificação de integridade por si só colocará carga desnecessária no cluster RDS com minha configuração de múltiplas instâncias. Eu poderia especificar uma página mais leve, mas isso ainda não é ideal, pois a verificação de integridade deve garantir que a instância esteja configurada corretamente e não quero que uma verificação específica do projeto seja adicionada a cada sistema que eu ativar. Embora existam casos de uso para isso também.

Eu uso esta simples verificação de integridade ( _healthCheck.php):

<?php
/**
 * Check if basic WordPress structure is in place
 * This is to be used for load balancer health checks
 */

// Checks
define('WORDPRESS_CONFIG', __DIR__ . DIRECTORY_SEPARATOR . 'wp-config.php');
define('WORDPRESS_DIRECTORY', __DIR__ . DIRECTORY_SEPARATOR . 'wordpress');
define('WP_CONTENT_DIRECTORY', __DIR__ . DIRECTORY_SEPARATOR . 'wp-content');


// Health Check Flags
$_healthCheckStatus = true;
// Will stop the while loop
$_healthCheckCompleted = false;

// Just to be safe
try {
    // DoWhile loop here to simplify kicking out on a false $_healthCheckStatus
    do {
        // Check if wp-config exists
        if (!file_exists(WORDPRESS_CONFIG)) {
            $_healthCheckStatus = false;
        }

        // Make sure we have required directories
        $_healthCheckStatus = _dirIsValidAndNotEmpty(WORDPRESS_DIRECTORY);
        $_healthCheckStatus = _dirIsValidAndNotEmpty(WP_CONTENT_DIRECTORY);

        // Checks are complete, kick out the loop
        $_healthCheckCompleted = true; // Just say no to infinity and beyond
    } while (false === $_healthCheckCompleted && true === $_healthCheckStatus);
} catch (\Exception $e) {
    // Health check fails
    $_healthCheckStatus = false;
}

// If a bad healthcheck, return 404 to tell the load balancer we suck
if (false === $_healthCheckStatus) {
    header("HTTP/1.0 404 Not Found");
    ?>
    <html>
    <body><h1>Health is bad</h1></body>
    </html>
    <?php
    die();
} else {
    ?>
    <html>
    <body><h1>Health appears good</h1></body>
    </html>
    <?php
}

/**
 * Validates a directory and ensures it's not empty
 * @param string $dir
 * @return bool
 */
function _dirIsValidAndNotEmpty($dir) {
    // Make sure we have a directory
    if (is_dir($dir)) {
        // Make sure it's not empty
        $_dirIsNotEmpty = (new \FilesystemIterator($dir))->valid();
        if ($_dirIsNotEmpty) {
            return true;
        }
    }

    return false;
}

Algumas coisas a serem observadas:

  • Eu sempre instalo o WordPress no wordpressdiretório.
    • Isso torna muito mais fácil manter um projeto no Git, pois você pode simplesmente ignorar o wordpressdiretório.
  • Como tenho o WordPress em seu próprio diretório, gosto de usar o meu próprio wp-contentpara simplificar o gerenciamento de projetos.
  • Você pode modificar isso facilmente de acordo com suas necessidades.

Esta verificação de integridade verifica apenas o sistema para garantir que esteja configurado corretamente. Não há necessidade de consultar o banco de dados, pois isso não é necessário para a verificação de integridade. Esse é um problema de configuração que deve ser resolvido antes de você configurar seu sistema.

Responder4

Editado:

Eu usei /wp-admin/images/wordpress-logo.svg (em versões anteriores funcionou com /favicon.ico) Parece mais um hack, mas se o wordpress não funcionar, você receberá um erro 5xx, caso contrário, 200 = já instalado, 200 =não instalado.

informação relacionada