J'essaie de configurer un certain nombre de redirections 301 à l'aide du fichier .htaccess. Pour une raison quelconque, cela ne fonctionne pas pour moi.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects
Quelqu'un peut-il expliquer pourquoi cela ne fonctionne peut-être pas pour mon site Wordpress?
En général, il est préférable de gérer les redirections du côté PHP. (en supposant qu'il soit implémenté par un développeur semi-compétent) Il est plus flexible et utilise moins de frais généraux.
Spécifiquement à la question, l'ensemble de règles wordpress gérera tous URL, votre règle est donc trop tardive et vous devez la déplacer avant les règles wordpress.
Essayez d'utiliser le code suivant:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^old-page-name(/.*)?$ https://www.myurl.com/new-page-name/ [L,R=301,NC]
RewriteRule ^another-old-page(/.*)?$ https://www.myurl.com/another-new-page/ [L,R=301,NC]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Pour les redirections comme celles-ci, je vous recommande d'utiliser ce plugin: https://wordpress.org/plugins/redirection/ Il est facile à utiliser et à prendre en charge, même les redirections REGEX avancées.
J'ai personnellement utilisé le fichier .htaccess uniquement pour des redirections plus avancées et liées à un domaine, c'est-à-dire la canonisation de domaine.
Mais si vous voulez vraiment faire cette redirection dans un fichier .htaccess, voici comment procéder:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress