web-dev-qa-db-fra.com

Comment rediriger les URL basées sur la chaîne de requête?

J'ai migré avec succès un Wordpress site à Drupal. Malheureusement dans WordPress, l'URL de contenu était quelque chose comme www.example.org/?p=123. Mon domaine est toujours le même, mais je veux faire une redirection via htaccess as Drupal=== Autorisera l'URL d'être www.example.org/?p=123. En d'autres termes, le contenu n'a pas le même URL comme il l'a fait dans WordPress. Par exemple, le nouveau Drupal URL serait quelque chose comme www.example.org/content/MyNewPage

J'ai essayé cela dans mon fichier .htaccess et cela ne fonctionne pas

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage

J'ai donc essayé ci-dessous, mais cela ne fonctionne pas non plus.

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage

Juste comme un test, j'ai essayé ci-dessous et cela a fonctionné.

Redirect 301 http://www.example.org http://www.google.com

Je me suis assuré que ma règle de redirection est en haut de la liste de mon .htaccess afin qu'il soit évalué en premier. Comment puis-je réparer ça?

18
user785179

ni Redirection ni RedirectMatch ne vous permettent de spécifier une chaîne de requête pour la source de redirection. [Source]

Vous devez utiliser mod-réwrite pour rediriger en fonction de la chaîne de requête:

RewriteCond %{QUERY_STRING}  ^p=375$
RewriteRule (.*)  http://www.example.org/content/MyNewPage?  [R=301,L]
33
undone

Vous pouvez envisager d'utiliser MODREWRITE dans votre HTACCESS

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{QUERY_STRING}     ^p=345$    [NC]
RewriteRule index.php content/MyNewPage [NC,L,R=301]

</IfModule>

Et vous pouvez également vouloir transmettre l'ancien ID de page à la nouvelle URL concaténée (ou peut-être par qs?):

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{QUERY_STRING}     ^p=(.*)$    [NC]
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301]

</IfModule>
1
sebastian-greco