1 votes

Règle de réécriture dans .htaccess

J'ai posé cette question dans Stackoverflow, mais l'un des répondants m'a dit de la poser ici à la place. Je me demande si c'est quelque chose qui peut être fait dans htaccess ?

J'ai cette URL :

https://www.example.com/folder/New.jsp?par=new1 

...vers lequel je veux rediriger :

 https://www.example.com/folder/New.jsp

comment dois-je faire ?

En gros, j'ai par=new1|new2|new3|new4 qui souhaitent être redirigés vers https://www.example.com/folder/New.jsp .

Toute aide de votre part sera très appréciée.

0voto

sysadmin1138 Points 129885

Si vous avez juste besoin que les paramètres soient enlevés, c'est assez simple.

RedirectMatch https://www.website.com/folder/New.jsp(\?par=.[a-z])  https://www.website.com/folder/New.jsp

Aucun mod_rewrite n'est nécessaire.

0 votes

Merci, sysadmin. Je suis assez nouveau avec ce mod_rewrite, alors s'il vous plaît pardonnez-moi avec ma question naïve. J'ai essayé de placer ce code dans le fichier .htacess avec d'autres redirections, mais notre site a reçu un message 404. J'ai également essayé de le placer sous le RewriteEngine on RewriteOptions inherit mais rien ne se passe. Où doit-il être placé ?

0 votes

Cette directive ne fera rien. Le mod_alias RedirectMatch ne correspond qu'au chemin d'accès à l'URL, ce qui exclut notamment le protocole, le nom d'hôte et la chaîne de caractères de la requête. Pour faire correspondre la chaîne de caractères de la requête, vous devez utiliser mod_rewrite comme indiqué dans ma réponse .

0voto

MrWhite Points 11269

Afin de faire correspondre des paramètres d'URL spécifiques, vous devez utiliser mod_rewrite avec un paramètre condition qui vérifie l'existence de la QUERY_STRING variable du serveur. Le mod_alias Redirect y RedirectMatch ne vérifient que le chemin d'accès à l'URL et ne peuvent pas être utilisées pour vérifier la chaîne de caractères de la requête.

Essayez ce qui suit en haut de la page .htaccess dans la racine du document :

RewriteEngine On

RewriteCond %{QUERY_STRING} ^par=(new1|new2|new3|new4) [NC]
RewriteRule ^folder/New\.jsp$ /$0 [NC,QSD,R,L]

El QSD (nécessite Apache 2.4) sur l'onglet RewriteRule directive rejette la chaîne de requête originale de l'URL redirigée. Si vous êtes toujours sous Apache 2.2, utilisez une balise ? à la fin de la substitution à la place. Par exemple : RewriteRule ^folder/New\.jsp$ /$0? [NC,R,L] .

$0 est une référence inverse à l'ensemble du chemin d'accès à l'URL correspondant à l'option RewriteRule motif . ie. folder/New.jsp .

Notez qu'il s'agit d'une redirection 302 (temporaire). Si une redirection 301 (permanente) est nécessaire, modifiez l'attribut R drapeau à lire R=301 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X