Apache 301重定向,同时保留URL的部分内容

Apache 301重定向,同时保留URL的部分内容,apache,redirect,mod-rewrite,Apache,Redirect,Mod Rewrite,是否可以编写301 Apache重定向并保留URL的一部分 例如,我有一些页面的标题中包含-md,并希望将它们重定向到相同的URL,而不带尾随-md。我希望保留test-page-1和test-page-2部分,但我不确定如何编写重写规则来实现这一点 /医生/test-page-1-md-->/pages/test-page-1 /医生/test-page-2-md-->/pages-test-page-2 如何编写重写规则,在/doctors之后查找/test-page-1-md 如何保存te

是否可以编写301 Apache重定向并保留URL的一部分

例如,我有一些页面的标题中包含-md,并希望将它们重定向到相同的URL,而不带尾随-md。我希望保留test-page-1和test-page-2部分,但我不确定如何编写重写规则来实现这一点

/医生/test-page-1-md-->/pages/test-page-1 /医生/test-page-2-md-->/pages-test-page-2

  • 如何编写重写规则,在/doctors之后查找/test-page-1-md

  • 如何保存test-page-1和test-page-2部分

  • 我一开始就一直在做这个,但我似乎运气不太好。我认为我的问题在于$1变量

    RewriteRule ^doctors/$1-md           /doctors/$1 
    
    这是:

    重写规则模式替换[标志]

    模式是与perl兼容的正则表达式。重写规则的替换是替换模式匹配的原始URL路径的字符串。所以,为了在替换中使用
    $1
    变量,首先需要在模式中匹配它:


    (以上内容应在.htaccess中使用;如果在VirtualHost配置中使用它,则必须以前导的
    /
    启动模式,因此:
    ^/doctors/(.+)-md
    )。一旦您确定一切正常,您也可以将302更改为301。

    谢谢Dusan!看起来很棒!所以对于像这样的apache重定向,我们可以使用任何与perl兼容的正则表达式,服务器会理解它吗?
    RewriteEngine on
    RewriteRule ^doctors/(.+)-md /pages/$1 [R=302]