Comment redirect des parties spécifiques d’une URL vers une nouvelle URL en utilisant htaccess?

Pour créer un nouveau site, je dois restructurer certains des liens et redirect les anciens liens vers les nouveaux liens. Je n’en ai que quelques-uns et sont comme suit:

about|what-we-do => about-us contact => get-in-touch our-work|projects => featured-work 

Je veux aussi pouvoir conserver tout ce qu’ils mettent après ces liens. Par exemple, je voudrais que les redirections soient comme ceci:

 our-work/web/project-title => featured-work/web/project-title 

C’est ce que j’ai dans mon fichier htaccess à ce stade, ce qui ne fonctionne pas.

 RewriteRule ^(about|what-we-do)(/)? /about-us/$1 [QSA,NC,L,R=301] RewriteRule ^contact(/)? /get-in-touch/$1 [QSA,NC,L,R=301] RewriteRule ^(our-work|projects)(/)? /featured-work/$1 [QSA,NC,L,R=301] RewriteRule ^about-us(/)?$ /pg.about.php [QSA,NC,L] RewriteRule ^get-in-touch(/)?$ /pg.contact.php [QSA,NC,L] RewriteRule ^featured-work(/)?$ /pg.projects.php [QSA,NC,L] RewriteRule ^hello(/)?$ /pg.hello.php [QSA,NC,L] 

Si j’essaie de visiter quelque chose comme /about je suis redirigé vers /about-us/about/ . Je ne suis pas bien familiarisé avec htaccess. Donc, si quelqu’un est capable de m’aider, ce serait très apprécié. Je vais continuer à le twigr. Merci d’avance!

Vos règles ne capturent pas la partie URI après la première barre oblique. Vous pouvez utiliser:

 RewriteEngine On RewriteRule ^(?:about|what-we-do)(/.*)?$ /about-us$1 [NC,L,R=301] RewriteRule ^contact(/.*)?$ /get-in-touch$1 [NC,L,R=301] RewriteRule ^(?:our-work|projects)(/.*)?$ /featured-work$1 [NC,L,R=301] RewriteRule ^about-us/?$ /pg.about.php [NC,L] RewriteRule ^get-in-touch/?$ /pg.contact.php [NC,L] RewriteRule ^featured-work/?$ /pg.projects.php [NC,L] RewriteRule ^hello/?$ /pg.hello.php [NC,L]