繁体   English   中英

如何使用htaccess将URL的特定部分重定向到新URL?

[英]How can I redirect specific parts of a URL to a new URL using htaccess?

在构建新站点时,我需要重组一些链接,并且需要将旧链接重定向到新链接。 我只有几个,如下:

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

我也希望能够保留他们在这些链接之后放置的所有内容。 例如,我希望重定向是这样的:

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

这是我目前在htaccess文件中所拥有的,无法正常工作。

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]

如果我尝试访问/about类的/about那么我将重定向至/about-us/about/ 我不太熟悉htaccess。 因此,如果有人能够帮助我,将不胜感激。 我会继续努力。 提前致谢!

您的规则未在第一个斜杠后捕获URI部分。 您可以使用:

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM