Proteger arquivos HTML com .htaccess
Pergunta
Meu PHP aplicativo usa 404 documentos para gerar arquivos HTML para que várias consultas para o mesmo arquivo HTML única causa a geração para executar uma vez.
Eu gostaria de pedidos de interceptação para os arquivos HTML para que o usuário precisa ter uma sessão PHP estabelecida, a fim de puxar para cima os arquivos.
No melhor dos casos, SESSÃO ID seria usado na URL e forçá-lo poderia ser usado como uma autenticação adicional. Por exemplo, o registo em que emitir um SessionID e fazer arquivos acessível a só certa HTML.
Estou ciente de que mudando meus cookies eu poderia falsificar um pedido, mas isso é bom.
Como eu iria fazer isso?
Solução
Algo como isso poderia funcionar (eu não testei):
RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html
Ele assume que você anexar "-$session_id.html"
a nomes de arquivos ($session_id
é do PHP ID da sessão).
Deve ser seguro, eo benefício é que os arquivos são servidos pelo servidor web diretamente sem invocar PHP em tudo.
Outras dicas
SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Directory>
Claro usuário pode criar manualmente tais cookies em seu navegador (existem extensões que fazer isso para o Firefox, e você sempre pode editar armazenamento de cookies do seu navegador).
Você pode usar o Apache módulo mod_rewrite para redirecionar as solicitações de URLs .html
a um script PHP:
RewriteEngine on
RewriteRule \.html$ script.php [L]
O caminho URI solicitado e consulta estará disponível na variável $_SERVER['REQUEST_URI']
.
Coloque você em cache arquivos fora de sua raiz web, mas ainda em um lugar onde PHP pode acessá-los.