15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
21.10.2024

Endereço WordPress vs Endereço do Site: Diferenças Técnicas, Configuração e Armadilhas Comuns

WordPress Address (URL) e Site Address (URL) são dois parâmetros de configuração distintos que controlam, respetivamente, onde os ficheiros principais do WordPress residem no servidor e qual o URL que o público utiliza para aceder ao front end do seu site. Na maioria das instalações padrão, ambos os valores são idênticos, mas podem — e por vezes devem — divergir quando aloja os ficheiros do WordPress numa subdiretoria enquanto serve o site a partir do domínio raiz.

Ter estes dois valores incorretos, mesmo que por um único carácter, pode bloquear o acesso ao painel de administração, desencadear avisos de conteúdo misto, quebrar endpoints da REST API e corromper cadeias de redirecionamento. As secções abaixo explicam a lógica arquitetural por detrás de cada definição, todos os cenários legítimos para as alterar e os métodos exatos para o fazer em segurança.

A Lógica Arquitetural por Detrás dos Dois Parâmetros de URL

O WordPress armazena a sua configuração de URL em dois locais simultaneamente: a tabela de base de dados wp_options (linhas siteurl e home) e, opcionalmente, o ficheiro wp-config.php através de constantes PHP. Compreender qual a fonte que tem precedência é essencial antes de alterar qualquer coisa.

Ordem de prioridade (da mais alta para a mais baixa):

  1. Constantes definidas em wp-config.php (WP_SITEURL, WP_HOME)
  2. Valores armazenados na tabela wp_options
  3. Valores introduzidos em Definições > Geral no painel de controlo

Quando uma constante é definida em wp-config.php, o campo correspondente em Definições > Geral torna-se apenas de leitura e aparece a cinzento. Isto é intencional — impede substituições acidentais através da interface enquanto ainda permite controlo programático.

WordPress Address (URL) — WP_SITEURL

O WordPress Address corresponde à opção siteurl em wp_options e à constante WP_SITEURL em wp-config.php. Indica ao WordPress onde os seus ficheiros PHP principais, o diretório wp-admin e o diretório wp-includes residem fisicamente. O WordPress utiliza este valor para construir todas as referências internas de caminhos de ficheiros, incluindo o URL de início de sessão do administrador, endpoints AJAX (/wp-admin/admin-ajax.php) e a base da REST API (/wp-json/).

Exemplo: se a sua instalação do WordPress se encontra em https://example.com/wordpress, então WP_SITEURL deve ser https://example.com/wordpress. Navegar para https://example.com/wordpress/wp-admin irá aceder ao painel de controlo.

Site Address (URL) — WP_HOME

O Site Address corresponde à opção home em wp_options e à constante WP_HOME em wp-config.php. Define o URL público canónico — o endereço que os utilizadores escrevem nos seus navegadores e a base a partir da qual o WordPress gera todas as estruturas de permalink do front end.

Exemplo: mesmo que os ficheiros principais se encontrem em https://example.com/wordpress, pode definir WP_HOME como https://example.com para que a página inicial, publicações e páginas sejam servidas a partir do domínio raiz. Isto requer um ficheiro index.php adicional e uma regra .htaccess na raiz (abordado abaixo).

Comparação: WordPress Address vs Site Address

AtributoWordPress Address (`WP_SITEURL`)Site Address (`WP_HOME`)
Linha `wp_options``siteurl``home`
Constante `wp-config.php``WP_SITEURL``WP_HOME`
ControlaLocalização dos ficheiros principais, `wp-admin`, `wp-includes`URL canónico público
Afeta o URL de início de sessão do administradorSimNão
Afeta os permalinks do front endNãoSim
Afeta a base da REST APISimNão
Afeta o sitemap e as tags canónicasIndiretamenteDiretamente
Pode diferir do outroSimSim
Requer alteração de `.htaccess` quando diferenteNãoSim

Quando Estes Dois Valores Devem Diferir

A razão legítima mais comum para separar WP_SITEURL e WP_HOME é o padrão de instalação em subdiretoria: pretende que os ficheiros do WordPress estejam isolados numa subdiretoria organizada (por exemplo, /wordpress ou /cms) enquanto o site público é resolvido no domínio raiz. Esta é uma escolha arquitetural deliberada, não uma solução alternativa.

Outros cenários que requerem a atualização de um ou ambos os valores:

  • Migração de domínio — mover de http://old-domain.com para https://new-domain.com requer a atualização de ambos os valores em simultâneo.
  • Atualização de HTTP para HTTPS — adicionar um certificado SSL significa alterar o prefixo de protocolo em ambas as definições de http:// para https://. Atualizar apenas um produz erros de conteúdo misto.
  • Promoção de staging para produção — um ambiente de staging normalmente funciona num subdomínio ou num domínio diferente; ambos os valores devem ser reescritos durante a implementação.
  • Proxy reverso ou descarregamento CDN — quando um balanceador de carga ou CDN termina o SSL e encaminha o tráfego para um servidor de backend, as definições de URL do WordPress devem refletir o domínio público, não o endereço interno do servidor.
  • Reconfiguração de rede Multisite — no WordPress Multisite, WP_SITEURL e WP_HOME interagem com as constantes DOMAIN_CURRENT_SITE e PATH_CURRENT_SITE, tornando a configuração correta ainda mais crítica.

Método 1: Atualizar através do Painel de Controlo do WordPress

Este é o método adequado quando ainda tem acesso de administrador e a alteração é simples (por exemplo, HTTP para HTTPS no mesmo domínio).

  1. Inicie sessão em https://yourdomain.com/wp-admin.
  2. Navegue para Definições > Geral.
  3. Localize os campos WordPress Address (URL) e Site Address (URL).
  4. Atualize ambos os valores conforme necessário.
  5. Clique em Guardar Alterações.

O WordPress irá redirecioná-lo imediatamente para o URL de administração atualizado. Se alterou o domínio, o seu navegador seguirá o redirecionamento para o novo endereço. Se o novo domínio ainda não estiver a resolver para o servidor, perderá o acesso ao painel de controlo — planeie a propagação DNS em conformidade.

Método 2: Definir Constantes em wp-config.php

Este método é preferido em servidores de produção porque impede alterações acidentais através da interface, funciona mesmo quando a base de dados está temporariamente indisponível e é facilmente controlado por versões. Num ambiente de VPS Hosting com acesso SSH root, esta é a abordagem mais fiável.

Abra wp-config.php no seu editor preferido:

nano /var/www/html/wp-config.php

Adicione as duas linhas seguintes acima do comentário /* That's all, stop editing! */:

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

Para o padrão de instalação em subdiretoria onde os ficheiros principais estão em /wordpress mas o site é servido a partir da raiz:

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com/wordpress' );

Guarde e feche o ficheiro. Os campos do painel de controlo serão agora apenas de leitura, o que é o comportamento esperado.

Instalação em Subdiretoria: Os Passos Necessários para .htaccess e index.php

Quando WP_HOME e WP_SITEURL diferem, o WordPress sozinho não consegue encaminhar pedidos do domínio raiz para os ficheiros principais na subdiretoria. Deve colocar um index.php modificado e um ficheiro .htaccess na raiz do documento.

Passo 1: Copie index.php da subdiretoria do WordPress para a raiz:

cp /var/www/html/wordpress/index.php /var/www/html/index.php

Passo 2: Edite o /var/www/html/index.php copiado para apontar para a subdiretoria:

<?php
// WordPress view bootstrapper
define( 'WP_USE_THEMES', true );

/** Loads the WordPress Environment and Template */
require __DIR__ . '/wordpress/wp-blog-header.php';

Passo 3: Certifique-se de que o seu .htaccess raiz contém o bloco de reescrita padrão do WordPress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Não copie o .htaccess da subdiretoria — conterá RewriteBase /wordpress/ que irá quebrar o encaminhamento do domínio raiz.

Método 3: Atualização Direta da Base de Dados via WP-CLI

Quando o painel de controlo está inacessível e prefere não tocar permanentemente em wp-config.php, o WP-CLI fornece uma solução limpa e programável. Isto é particularmente útil em Servidores Dedicados que executam pipelines de implementação automatizados.

wp option update siteurl 'https://example.com' --path=/var/www/html
wp option update home 'https://example.com' --path=/var/www/html

Para verificar se a alteração foi aplicada:

wp option get siteurl --path=/var/www/html
wp option get home --path=/var/www/html

O WP-CLI respeita as constantes wp-config.php — se WP_SITEURL ou WP_HOME já estiverem definidas aí, o comando wp option update não as irá substituir. Deve atualizar as constantes diretamente no ficheiro.

Método 4: Atualização Direta MySQL (Último Recurso)

Utilize este método apenas quando o acesso SSH está disponível mas o WP-CLI não está instalado e o painel de controlo está bloqueado. Identifique primeiro o prefixo da sua tabela (verifique $table_prefix em wp-config.php, normalmente wp_).

mysql -u db_user -p db_name
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name = 'home';

Confirme a atualização:

SELECT option_name, option_value FROM wp_options WHERE option_name IN ('siteurl', 'home');

Saia do MySQL e limpe qualquer cache de objetos (Redis, Memcached ou OPcache) antes de testar o site.

Configuração SSL e Atualizações de URL

A atualização de HTTP para HTTPS é a razão mais comum para atualizar ambos os parâmetros de URL simultaneamente. Após instalar um certificado SSL — seja através do Let’s Encrypt via Certbot ou um certificado comercial de um fornecedor como os disponíveis através de Certificados SSL — deve atualizar tanto WP_HOME como WP_SITEURL para utilizar o prefixo https://.

Não atualizar ambos, ou atualizar apenas um, produz avisos de conteúdo misto: o navegador recebe uma página HTTPS que referencia recursos HTTP (scripts, folhas de estilo, imagens). Os navegadores modernos bloqueiam completamente o conteúdo ativo misto, o que quebra a funcionalidade JavaScript e o painel de administração.

Após atualizar as constantes de URL, execute uma pesquisa e substituição na base de dados para atualizar todos os URLs serializados armazenados no conteúdo de publicações, postmeta e opções:

wp search-replace 'http://example.com' 'https://example.com' --all-tables --path=/var/www/html

O sinalizador --all-tables garante que os dados serializados em tabelas personalizadas (WooCommerce, construtores de páginas) também são atualizados. Faça sempre uma cópia de segurança da base de dados antes de executar este comando.

Configurar URLs do WordPress com cPanel

Se gere o WordPress num VPS com cPanel, pode utilizar o Gestor de Ficheiros do cPanel para editar wp-config.php sem necessitar de acesso SSH:

  1. Inicie sessão no cPanel e abra o Gestor de Ficheiros.
  2. Navegue para a raiz do documento do seu WordPress (normalmente public_html ou uma subdiretoria).
  3. Clique com o botão direito em wp-config.php e selecione Editar.
  4. Adicione as constantes WP_HOME e WP_SITEURL conforme mostrado no Método 2.
  5. Guarde o ficheiro.

Em alternativa, utilize a ferramenta phpMyAdmin no cPanel para executar as instruções SQL UPDATE do Método 4 diretamente na sua base de dados WordPress.

Armadilhas Críticas e Casos Especiais

Incompatibilidade de protocolo entre as duas definições. Definir WP_SITEURL como https://example.com e WP_HOME como http://example.com (ou vice-versa) cria um ciclo de redirecionamento. O navegador segue o redirecionamento HTTPS do servidor, mas o WordPress gera links de front end HTTP, que o servidor redireciona de volta para HTTPS. Este ciclo é invisível no painel de controlo, mas devastador para crawlers e utilizadores.

Inconsistência de barra final. O WordPress é sensível às barras finais nestas constantes. https://example.com e https://example.com/ são tratados como valores diferentes. Omita sempre a barra final em ambas as constantes para corresponder às expectativas internas do WordPress.

Envenenamento do cache de objetos após alteração de URL. Se o seu servidor executa um cache de objetos persistente (Redis ou Memcached), os valores antigos de URL podem estar em cache na memória mesmo após a atualização da base de dados. Limpe o cache de objetos imediatamente após qualquer alteração de URL:

wp cache flush --path=/var/www/html

Dados serializados na base de dados. O WordPress armazena muitos valores de opções e metadados de publicações como strings serializadas PHP. Uma substituição de string ingénua (por exemplo, utilizando sed num dump da base de dados) irá corromper os dados serializados ao invalidar os prefixos de contagem de bytes. Utilize sempre o comando search-replace do WP-CLI, que trata a serialização corretamente.

Considerações sobre redes Multisite. Numa instalação WordPress Multisite, WP_SITEURL aplica-se ao administrador da rede, não aos subsites individuais. Cada subsite tem as suas próprias entradas siteurl e home na respetiva tabela wp_X_options. Uma alteração de URL em toda a rede requer a atualização da tabela de opções de cada subsite, o que o WP-CLI trata com o sinalizador --network:

wp search-replace 'http://old-domain.com' 'https://new-domain.com' --all-tables --network --path=/var/www/html

Confiança em cabeçalhos de proxy reverso. Em servidores atrás de um balanceador de carga ou proxy reverso Nginx, o WordPress pode detetar o protocolo errado se o proxy não encaminhar o cabeçalho X-Forwarded-Proto. Mesmo com constantes de URL corretas, os links internos podem reverter para HTTP. Adicione o seguinte a wp-config.php para forçar a deteção HTTPS:

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
    $_SERVER['HTTPS'] = 'on';
}

Verificar a Configuração Após as Alterações

Após atualizar qualquer parâmetro de URL, execute os seguintes passos de verificação antes de considerar a alteração concluída:

# Confirm wp_options values reflect the change
wp option get siteurl --path=/var/www/html
wp option get home --path=/var/www/html

# Check for mixed-content issues using curl
curl -sI https://example.com | grep -i location

# Verify the REST API is reachable at the correct base
curl -s https://example.com/wp-json/ | python3 -m json.tool | head -20

# Confirm no HTTP references remain in post content
wp search-replace --dry-run 'http://example.com' 'https://example.com' --all-tables --path=/var/www/html

O sinalizador --dry-run no último comando reporta quantas substituições seriam feitas sem modificar realmente os dados. Se a contagem for zero, a migração está limpa.

Para equipas que gerem múltiplas instâncias WordPress em ambientes de Alojamento Web Partilhado ou VPS, automatizar este passo de verificação num script pós-implementação elimina o risco de lançar um site com referências de URL desatualizadas.

Matriz de Decisão: Qual Método Utilizar

SituaçãoMétodo Recomendado
Painel acessível, alteração simples de domínio ou protocoloDefinições > Geral (Método 1)
Servidor de produção, alteração deve ser controlada por versõesConstantes `wp-config.php` (Método 2)
Painel bloqueado, SSH disponível, WP-CLI instaladoWP-CLI `option update` (Método 3)
Painel bloqueado, sem WP-CLI, SSH disponívelMySQL UPDATE direto (Método 4)
Ambiente cPanel, sem SSHGestor de Ficheiros cPanel + phpMyAdmin
Alteração de URL em toda a rede MultisiteWP-CLI `search-replace –network`
Limpeza pós-migração de URLs serializadosWP-CLI `search-replace –all-tables`

Lista de Verificação de Pontos-Chave Técnicos

  • Atualize sempre WP_SITEURL e WP_HOME em conjunto, a menos que necessite intencionalmente do padrão de subdiretoria.
  • Defina constantes em wp-config.php em servidores de produção para evitar substituições acidentais através da interface.
  • Após qualquer alteração de URL, limpe o cache de objetos e execute wp search-replace com --all-tables para capturar dados serializados.
  • Para migrações de HTTP para HTTPS, atualize primeiro as constantes de URL, depois execute a pesquisa e substituição, depois verifique com curl para conteúdo misto.
  • Em instalações em subdiretoria, o index.php raiz deve referenciar o caminho da subdiretoria, e .htaccess deve utilizar RewriteBase /.
  • Nunca utilize uma barra final nas constantes WP_HOME ou WP_SITEURL.
  • Em configurações de proxy reverso, adicione a deteção HTTP_X_FORWARDED_PROTO a wp-config.php ou o WordPress irá gerar referências de protocolo incorretas independentemente das definições de URL.
  • No Multisite, a tabela wp_X_options de cada subsite deve ser atualizada independentemente; utilize o sinalizador --network com o WP-CLI.

Perguntas Frequentes

O que acontece se o WordPress Address e o Site Address forem diferentes sem a configuração de subdiretoria?

O WordPress tentará carregar os ficheiros principais a partir do caminho especificado em WP_SITEURL. Se não existir nenhuma instalação do WordPress nesse caminho, todos os pedidos de administração retornarão erros 404 ou um ecrã branco. O front end pode ainda carregar se WP_HOME estiver correto e as regras de reescrita estiverem intactas, mas qualquer pedido AJAX, chamada à REST API ou ação de administração irá falhar.

Posso definir WP_HOME e WP_SITEURL com protocolos diferentes (um HTTP, outro HTTPS)?

Não. Misturar protocolos entre as duas constantes cria um ciclo de redirecionamento que nem os navegadores nem os crawlers conseguem resolver. Ambas as constantes devem utilizar o mesmo protocolo. Se estiver a impor HTTPS ao nível do servidor (via Nginx ou Apache), ambas as constantes devem utilizar https://.

Por que razão o campo WordPress Address está a cinzento em Definições > Geral?

O campo é apenas de leitura porque WP_SITEURL (ou WP_HOME) está definido como uma constante PHP em wp-config.php. As constantes definidas no código têm precedência sobre os valores da base de dados e não podem ser substituídas através da interface. Para tornar o campo editável novamente, remova ou comente a linha define() correspondente em wp-config.php.

A alteração do Site Address afeta o meu SEO e os backlinks existentes?

Sim. Alterar WP_HOME muda o URL base canónico para cada página do seu site. Sem redirecionamentos 301 adequados da estrutura de URL antiga para a nova, os motores de busca tratarão os URLs antigos e novos como páginas separadas, dividindo a equidade de links e potencialmente desencadeando penalizações por conteúdo duplicado. Configure sempre redirecionamentos 301 ao nível do servidor antes ou simultaneamente com a alteração de URL.

Como recupero se introduzi o URL errado e agora estou bloqueado fora do wp-admin?

Ligue-se ao seu servidor via SSH e defina as constantes corretas em wp-config.php utilizando o Método 2, ou utilize o WP-CLI para atualizar as opções siteurl e home diretamente via Método 3. Se nenhum estiver disponível, utilize o phpMyAdmin ou uma ligação MySQL direta para executar as instruções UPDATE do Método 4. Assim que o acesso for restaurado, remova quaisquer constantes temporárias se preferir que o painel de controlo gira os valores daqui em diante.

15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar