Redirection SSL dans VirtualHost provoquant la rupture de l'URL

4

J'ai récemment configuré par site Web pour diriger tout le trafic via https. Je l’ai fait en modifiant le fichier vhost pour le montrer.

<VirtualHost *:80>
    DocumentRoot "/srv/http/example"
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost> 

Cela fonctionne très bien lorsque je vais à la racine du site, par exemple example.com. Toutefois, lorsque j'essaie d'accéder à un sous-répertoire, j'ai une rupture étrange dans l'URL. Par exemple, si je tape exemple.com/blog, il essaie de rediriger vers https: //example.comblog . Qu'est-ce qui se passe ici?

stmfunk
la source
Je ne peux pas reproduire cette erreur si la Redirectligne devient Redirect permanent / https://example.com(par exemple, sans barre oblique). Avec votre configuration ci-dessus, la redirection fonctionne correctement.
masegaloeh
J'ai essayé d'enlever le trailing / et en utilisant RedirectMatch permanent ^/(.*)$ https:/example.com/$1et aucun n'a fonctionné.
Stmfunk

Réponses:

4

J'ai réussi à résoudre le problème en changeant:

https://example.com/

à

https://example.com\/

Cela semble avoir résolu le problème, je suppose qu’à un moment donné Apache a supprimé la barre oblique.

stmfunk
la source
1

Pour rediriger un site TLS / SSL vers un site non-TLS, voir les détails ci-dessous:

L'ajout d'une barre oblique de fin et son échappement avec une barre oblique inversée rétablit la barre oblique manquante.

J'ai trouvé que mon site particulier avait besoin de la redirection dans les deux hôtes virtuels (*: 80 et *: 443), mais celui TLS ne fonctionnait pas correctement. Les éléments suivants ajoutés aux deux hôtes virtuels ont résolu le problème.

Redirect permanent "/" http://example.com\/  

Remarque: la documentation d'Apache montre l'ajout de guillemets autour de tout. Dans mon cas, ce qui précède a bien fonctionné, permettant aux pages de l’URL d’être résolues comme prévu. Source: https://httpd.apache.org/docs/2.4/en/rewrite/avoid.html

Exemples extrapolés à partir de la source:

Redirect "/one/" "http://one.example.com/"
Redirect permanent "/" "http://example.com/"

J'espère que ça aide quelqu'un.

semtex41
la source