Apache redirecionando para outra página, mas não funcionando [duplicado]

1

Eu tenho um nome de vhost example.conf que contém linhas abaixo.

<VirtualHost *:80>
ServerName example.com
ServerAdmin [email protected]

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/app1_access.log combined
ErrorLog /var/log/httpd/app1_error.log

redirect / http://example.com/jenkins
DirectoryIndex index.html index.php
JkMount /jenkins/* failover
JkMount /jenkins failover

</VirtualHost>

Eu quero que, se alguém acessar http://example.com , abra http://example.com/jenkins

Meu URL está redirecionando para

http://example.com/jenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkinsjenkins

Assim.

É o Jenkins no tomcat com o servidor web apache. Qualquer ajuda seria muito apreciada.

    
por user2916639 26.06.2018 / 11:33

1 resposta

1
redirect / http://example.com/jenkins

Se estiver redirecionando para o mesmo host, isso resultará em um loop de redirecionamento porque a diretiva Redirect usa correspondência de prefixo simples e tudo após a correspondência ser copiada no final da URL de destino. Então, você obterá o seguinte:

  • / (pedido inicial)
  • /jenkins (primeiro redirecionamento)
  • /jenkinsjenkins (segundo redirecionamento)
  • etc.

Você precisa usar uma diretiva RedirectMatch para poder corresponder apenas à raiz do documento. RedirectMatch (também parte de mod_alias) corresponde a um regex, em vez de uma correspondência de prefixo. Por exemplo:

RedirectMatch 302 ^/$ http://example.com/jenkins

Eu incluí o argumento do código de status opcional para deixar claro que este é um redirecionamento 302 (temporário) (o padrão).

Você precisará reiniciar o Apache depois de fazer qualquer alteração na configuração do servidor. E, como sempre, verifique se você limpou o cache do seu navegador antes de testá-lo.

    
por 26.06.2018 / 12:05