SSL .htaccess - Simple Q

Nov 13 2020

Eu realmente odeio esse arquivo ... Acabei de passar 6,5 horas tentando descobrir isso e com minha dislexia TDAH é simplesmente impossível! Tenho um domínio que comprei para SSL (atualmente tenho que esperar o SSL para WWW entrar em ação, mas por enquanto o domínio sem WWW funciona, por exemplo:

https://tomas.com

O .htaccess que tenho na raiz atualmente é:

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

E o código acima na verdade ativa SSL, o que é bom. O que acontece é que tenho alguns arquivos no domínio raiz, mas um deles chamado é:

hello.php (localizado em: "tomas.com/hello.php")

Se eu for para: http://tomas.com/helloEu quero que ele exiba esse arquivo (e na barra de endereço deve dizer: "http://tomas.com/hello"). Antes do SSL eu tinha esse código abaixo e funcionava (mas não funciona mais):

RewriteRule ^([^/]*)/?(.*)$ $1.php

Alguma ideia de como todo o .htaccess deve ser? : /

Eu também estou tentando FORÇAR para NÃO usar www (então se eles fizerem isso deve ser redirecionado para um url não WWW) Muito obrigado antecipadamente !!!!!!!!!!!!

Respostas

1 MrWhite Nov 14 2020 at 03:02

Antes do SSL eu tinha esse código abaixo e funcionava (mas não funciona mais):

RewriteRule ^([^/]*)/?(.*)$ $1.php

Não tenho certeza de como isso "funcionava" antes, não é completo por si só e faz mais do que simplesmente anexar uma .phpextensão. Você precisa de algo para evitar um loop de reescrita, pois hello.phptambém corresponde ao padrão ^([^/]*)/?(.*)$.

Em vez disso, tente o seguinte, após o redirecionamento de HTTP para HTTPS.

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]

Isso primeiro verifica se o arquivo com uma .phpextensão de arquivo existe antes de regravá-lo internamente.

Como alternativa , você pode apenas habilitar MultiViews se não estiver fazendo nenhuma outra regravação de URL. Por exemplo, na parte superior do seu arquivo:

Options +MultiViews

Isso usa mod_negotiation para habilitar URLs sem extensão para tudo !