SSL .htaccess - Simple Q
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
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 !