Forçando HTTPS com .htaccess no site com o Wordpress na subpasta

1

Não consigo fazer com que meu arquivo .htaccess funcione para forçar o tráfego HTTPS

Estrutura do site que vejo se eu fizer o ftp para meu provedor de hospedagem:

/
  domains
    mydomainname.com
      public_html
        blog
  • Os arquivos do meu site começam em public_html ( index.html etc)
  • Eu tenho uma instalação do WordPress em blog
  • As configurações do Wordpress foram definidas para https: (as configurações gerais mencionam https://www.mydomainname.com/blog como o URL do Wordpress).
  • O certificado SSL está funcionando bem se eu for para o domínio
  • Inicialmente, havia apenas um .htaccess em blog , contendo:

# BEGIN WordPress

RewriteEngine On
RewriteBase /blog/
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

# END WordPress

Todos os tipos de tutoriais eu vejo mencionar que devo adicionar isso ao início de .htaccess :

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mydomainname.com/$1 [R,L]

.. e que eu deveria colocar este arquivo 'na raiz do meu site'.

Se eu não tiver o arquivo (outro) .htaccess :

  • posso navegar até https://www.mydomainname.com , seguir links no blog do WP e navegar por lá, todos os https:
  • Se eu for para http://www.mydomainname.com , siga os links no blog do WP, eles se transformarão em https:

Se eu colocar um htaccess modificado em vários locais, recebo problemas como (dependendo do .htaccess contents / locations que estou tentando):

  • Se eu for para www.mydomainname.com , ele redireciona para https://www.mydomainname.com e recebo "Servidor não encontrado"; ou:
  • Sem forçar de http: para https:

Perguntas:

  • O .htaccess deve ser colocado em mydomainname.com ou public_html (ou seja, qual pasta é a famosa 'raiz do meu site')? Eu tentei os dois.
  • Deve também ser colocado em blog ? Em caso afirmativo, eles precisam ser idênticos?
  • Quais são os conteúdos apropriados do (s) arquivo (s) .htaccess ?

Eu tentei todos os tipos de variações, mas não consigo fazê-lo funcionar - obviamente, não a variação certa ainda.

FWIW: Eu suponho que meu provedor de hospedagem usa o Apache. Eu não tenho controle sobre sua configuração.

    
por Jan Doggen 01.08.2017 / 21:43

2 respostas

1

Eu diria que você deve colocar seu novo arquivo .htaccess na pasta public_html.

Experimente o seguinte com o mod_rewrite no seu arquivo .htaccess

RewriteEngine On
# This will enable the Rewrite capabilities
RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf or .htaccess context

Essas três linhas também precisam ser adicionadas ao arquivo .htaccess na pasta blog , modificando o RewriteRule para refletir essa subpasta:

RewriteRule ^/?(.*) https://%{SERVER_NAME}/blog/$1 [R,L]

Também pode ser útil aplicar o mod_ssl para forçar o SSL com a diretiva SSLRequireSSL :

This directive forbids access unless HTTP over SSL (i.e. HTTPS) is enabled for the current connection. This is very handy inside the SSL-enabled virtual host or directories for defending against configuration errors that expose stuff that should be protected. When this directive is present all requests are denied which are not using SSL. Keep in mind that this will not do a redirect to https by itself.

    
por 05.08.2017 / 08:37
0

Este é um resumo do artigo Força HTTPS em todas as páginas do seu site WordPress descrevendo como tornar um blog WordPress inteiro seguro via HTTPS.

  1. Forçar o SSL para páginas de administrador e de login
    Adicione a seguinte linha ao arquivo wp-config.php na raiz do diretório do WordPress:
    define('FORCE_SSL_ADMIN', true);

  2. Definir https nas configurações
    No painel de controle do seu WordPress, vá para Settings -> General e altere os dois URLs para ter https:// em vez de http:// :

  3. Atualizaro.htaccess
    Adicioneregrasdereescritanoarquivo.htaccessencontradonaraizdoaplicativoWordPress:

    <IfModulemod_rewrite.c>RewriteEngineOnRewriteCond%{SERVER_PORT}!^443$RewriteRule(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]RewriteBase/RewriteRule^index\.php$-[L]RewriteCond%{REQUEST_FILENAME}!-fRewriteCond%{REQUEST_FILENAME}!-dRewriteRule./index.php[L]</IfModule>

Duaslinhasforamadicionadasdizendoque,seaportaatualnãoé443,reescrevaaURLparausarHTTPScomumredirecionamento301:

RewriteCond%{SERVER_PORT}!^443$RewriteRule(.*)https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
  • Esvazie todos os caches do seu aplicativo
  • por 05.08.2017 / 09:13