RewriteCond %{ENV:HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Pour correspondre à un chemin URL spécifique qui commence /x/
alors changez le RewriteRule
à lire ^x/
(sans préfixe slash) à la place. Par exemple :
RewriteRule ^x/ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Vous devrez vider le cache de votre navigateur avant de procéder au test. (Pour cette raison, il est plus facile de tester d'abord avec des redirections temporaires 302).
Cependant, quelques remarques concernant vos directives...
-
Il s'agit manifestement d'une redirection de HTTPS vers HTTP - le contraire de ce que vous avez indiqué dans votre exemple précédent (et très peu recommandé en 2019) !
-
L'utilisation de la HTTPS
variable d'environnement (c'est-à-dire. %{ENV:HTTPS}
) n'est pas standard. Je suppose que vous avez reçu des instructions de votre hôte à ce sujet ?
https://example.com/?wildcard
pour être redirigé vers http://example.com/wildcard
El RewriteRule
motif (ex. ^x/
ci-dessus) ne correspond qu'au chemin d'accès à l'URL, ce qui exclut notamment la partie chaîne de requête de l'URL.
Pour faire correspondre la chaîne de caractères de la requête, vous avez besoin d'un fichier RewriteCond
( condition ) qui correspond à la directive QUERY_STRING
variable du serveur.
Par exemple, pour rediriger example.com/?foo
zu example.com/foo
vous feriez quelque chose comme ce qui suit :
RewriteCond %{QUERY_STRING} ^(foo)$
RewriteRule ^$ /%1 [QSD,R,L]
Où %1
est un renvoi au premier groupe capturé dans la dernière condition appariée. Notez qu'il n'y a pas de chemin URL dans l'exemple ci-dessus (indiqué par la regex ^$
). Le site QSD
(Query String Discard) est requis pour supprimer la chaîne de requête de l'URL redirigée.
Si vous vouliez une variante plus "sauvage" (qui correspondrait à tout ce qui est dans la chaîne de requête), comme vous semblez le suggérer dans votre exemple, alors quelque chose comme :
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^$ /%1 [QSD,R,L]
Notez qu'un R
sans code d'état entraîne par défaut une redirection 302 (temporaire).
1 votes
Vous n'avez qu'un seul domaine ? Est-ce que le
www
sous-domaine accessible ? Je supposeanything_here
ne fait pas réellement partie de l'"URL qui commence par..." comme le laisse entendre votre question ? Ainsi, le chemin URL commence simplement par/x/
? Avez-vous essayé quelque chose ? Cela ressemble à une redirection standard de HTTP vers HTTPS. Avez-vous obtenu une erreur ou une redirection incorrecte lorsque vous avez essayé de mettre en œuvre cette méthode ? Avez-vous d'autres directives dans votre.htaccess
fichier ?0 votes
@MrWhite J'ai mis à jour ma question