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?
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]
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>