Redirection permanente d'url avec des "?"

Nouveau WRInaute
Bonjour !

J'ai mis a jour le site d'un client récemment et aujourd'hui que la mise en production est terminée nous voudrions que les anciennes URL du site pointent correctement vers les nouvelles en mettant des redirectPermanent dans le htaccess. Mais voila, le format des anciennes url est peu commun : du type "www.monsite.com/?-Page-" et ça ne fonctionne pas.

J'ai testé avec des URL simple ça fonctionne bien (par exemple www.monsite.fr/category vers l'accueil).

N'étant pas expert en redirection j'ai un peu de mal à comprendre comment faire.

Voici la structure que j'ai utilisée jusqu'à présent :
RedirectPermanent http://www.monsite.com/?-Page- http://www.monsite.com/url/page/

En m'inspirant du post "https://www.webrankinfo.com/forum/redirection-spip-rubriquen-vers-page-html-htaccess-qlqs-urls-t120904.html" j'ai testé ça :
RewriteCond %{request_uri} /?-Accueil- [NC]
RewriteRule ^(.*)$ /index.php [L]
Mais ça n'a pas mieux fonctionné.

Je vous remercie par avance des éclaircissements que vous pourrez m'apporter.
 
WRInaute discret
Au lieu de
Code:
/?-Accueil-
essaye plutôt
Code:
index.php?-Accueil-
(Si c'est bien du PHP et en espérant que le code fournit dans le précédent poste fonctionne ;))
 
WRInaute impliqué
Code:
RewriteCond %{QUERY_STRING} ^-(.*)-$
RewriteRule .* http://www.monsite.com/url/%1 [L, R=301]

En théorie, ceci devrait fonctionner.
 
Nouveau WRInaute
Merci de vos réponse, je commence à désespérer :(

remplacer /?-Accueil- par index.php/?-Accueil ne fait rien
Code:
RewriteCond %{QUERY_STRING} ^-(.*)-$
RewriteRule .* http://www.monsite.com/%1 [L, R=301]
Me fait une Internal server error

En plus cette dernière syntaxe redirigerais de manière trop générique je pense parce que j'ai tout un lot d'URL de ce genre a rediriger (?-Accueil-, ?-Solutions-, ?-Services- .......) et si je comprend bien ce que tu as écris toutes les adresses de type ?-xxx- seraient redirigées vers le 2e parametre de la 2e ligne (index du site en l'occurence).
Ou alors j'ai mal compris ^^

Le nouveau site étant basé sur une solution wordpress j'ai par défaut ceci dans le htcaccess... peut être cela vous aidera il a mieux comprendre pourquoi ça ne fonctionne pas.
Code:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Ceci étant placé avant les tentatives de redirections que je fais.

Encore merci de votre aide.
 
WRInaute discret
Quand nous n'arrivons pas à rediriger avec le htaccess, nous le faisons en PHP.

Comme tu es sous Wordpress, place le code de la redirection dans le index.php de ton théme

Je précise "thème", car les autres fichiers seront écrasés lors de mises à jours.
 
Nouveau WRInaute
Merci pour vos réponses.

Ca m'embête un peu de devoir le faire en PHP mais s'il n'y a pas de solution tant pis !

Une idée de ce qui provoque le blocage comme ça ? Ca pourrait m'éviter de le reproduire pour empêcher les soucis plus tard.
 
Nouveau WRInaute
Bonjour

tu peut aussi rediriger toutes les pages qui contient '?page=' vers le racine de site ou vers un page

voila le code qui j'ai utilisé pour un des mes sites :

Code:
RewriteCond %{QUERY_STRING} ^page=(.*)$
RewriteRule ^index\.html$ http://www.monsite.com/? [L,R=301]
 
Discussions similaires
Haut