mod_rewrite para posterior problema barra
-
03-07-2019 - |
Pergunta
Eu estou puxando meu cabelo para fora sobre o que deve ser um problema insanamente simples. Estamos executando o WebSphere IHS (Apache) através de um F5 BigIP. BigIP está fazendo a tradução https para nós. Nossa url (mudou para web, não é válido) é https://superniftyserver.com/lawson/portal .
Quando alguém digitar só que sem a barra depois de portal, Apache assume "portal" para ser um arquivo e não um diretório. Quando o Apache descobre o que é, ele envia a 301 Permanente Redirect. Mas desde Apache conhece apenas http, ele envia a URL como http://superniftyserver.com/lawson/portal/, que, em seguida, cria problemas.
Então, eu tentei uma mudança de nível do servidor httpd.conf para mod_rewrite, este é um dos dezenas de combinações que eu tentei.
RewriteEngine on RewriteRule ^ / Lawson / portal (. *) / Lawson / portal / $ 1
Eu também tentei RewriteRule ^ / Lawson / $ portal / Lawson / portal /
Entre muitas outras coisas ... O que eu estou ausente?
Solução
Se você não pode obter uma resposta sobre a sintaxe RewriteRule, aqui estão duas outras opções para você: Escrever um iRule personalizado em BigIP (veja F5 DevCentral ) que procura 301 respostas e convertê-los em SSL; deixar passar a URL no seu servidor WebSphere e fazer um redirecionamento programático que envia HTTPS. No entanto, porque F5 finaliza a conexão SSL, você tem que definir um cabeçalho personalizado que você configure (veja PQ86347 ) para que o Java request.getScheme () funciona como seria de esperar.
Outras dicas
Fixed!
SOL6912: Configurando um perfil HTTP para reescrever URLs para que os redirecionamentos de um servidor HTTP especificar o protocolo HTTPS
Atualizado: 8/7/07 0:00
servidor virtual A ClientSSL é tipicamente configurado para aceitar conexões HTTPS de um cliente, descriptografar a sessão SSL, e enviar o pedido HTTP não criptografado para o servidor web.
Quando um URI solicitado não incluir uma barra (uma barra, tais como /, no final do URI), alguns servidores web gerar um redirecionamento cortesia. Sem uma barra no final, o servidor web irá primeiro tratar o recurso especificado na URI como um arquivo. Se o arquivo não pode ser encontrado, o servidor web pode procurar um diretório com o mesmo nome e, se for encontrado, envie um HTTP 302 redirecionamento resposta de volta para o cliente com uma barra. O redirecionamento será devolvido ao cliente em modo HTTP em vez de HTTPS, fazendo com que a sessão SSL falhar.
A seguir é um exemplo de como uma resposta de redirecionamento HTTP 302 faz com que a sessão SSL falhar:
· Para solicitar uma sessão SSL, um usuário digita https://www.f5.com/stuff, sem uma barra final.
· O navegador do cliente envia uma solicitação SSL para o servidor virtual ClientSSL, que reside no sistema BIG-IP LTM.
· O sistema LTM BIG-IP, em seguida, decifra o pedido e envia um comando GET / material para o servidor web.
· Uma vez que o arquivo / coisas não existem no servidor web, mas existe uma coisa / diretório / virtual, o servidor web envia uma resposta de redirecionamento HTTP 302 para o diretório, mas acrescenta uma barra para o recurso. Quando o servidor web envia a resposta de redirecionamento HTTP 302, especifica HTTP (não HTTPS).
· Quando o cliente recebe a resposta de redirecionamento HTTP 302, ele envia uma nova solicitação para o servidor virtual BIG-IP LTM que especifica HTTP (não HTTPS). Como resultado, a conexão SSL falhar.
Configuração de um perfil HTTP para reescrever URLs
Em BIG-IP LTM versão 9.x você pode configurar um perfil HTTP para reescrever URLs para que os redirecionamentos de um servidor HTTP especificar o protocolo HTTPS. Para isso, execute o seguinte procedimento:
-
Faça login no utilitário de configuração.
-
Clique tráfego local.
-
Clique em Perfis.
-
Clique no botão Criar.
-
Digite um nome para o perfil.
-
Escolha http do Pai Perfil drop-down menu.
-
Configurações, definir Redirect Rewrite a todos, Matching, ou nós, dependendo de sua configuração
Por exemplo:
o Escolha Tudo para reescrever qualquer HTTP 301, 302, 303, 305, ou 307 redirecionamentos para HTTPS
o Escolha condizer para reescrever redireccionamentos quando o percurso e componentes de consulta URI do pedido e o redirecionamento são idênticas (excepto para a barra à direita)
o Escolha Nó de reescrever redireciona quando o redirecionamento URI contém um endereço IP nó em vez de um nome de host, e você deseja que o sistema para mudá-lo para o endereço do servidor virtual
- Clique em Concluído.
Você deve agora associar o novo perfil HTTP com o servidor virtual ClientSSL.
Tente isto:
# Trailing slash problem
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ https://<t:sitename/>$1/ [redirect,last]
LoadModule rewrite_module modules/mod_rewrite.so
Certifique-se que a linha está em algum lugar que você httpd.conf