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

时间:2018-08-14 19:51:56

标签: apache redirect mod-rewrite

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

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

/ doctors / test-page-1-md ---> / pages / test-page-1 / doctors / test-page-2-md ---> / pages-test-page-2

  1. 我如何编写重写规则以在/ doctors之后查找/ test-page-1-md?

  2. 我如何保留test-page-1和test-page-2部分?

我一直在着手这项工作,但似乎运气并不好。我认为我的问题出在$ 1变量上。

RewriteRule ^doctors/$1-md           /doctors/$1 

1 个答案:

答案 0 :(得分:0)

这是RewriteRule syntax

  

RewriteRule 模式 替换 [标志]

Pattern是与Perl兼容的正则表达式。重写规则的替换是替换由Pattern匹配的原始URL路径的字符串。因此,为了在 Substitution 中使用$1变量,您首先需要在 Pattern 中匹配它:

RewriteEngine on
RewriteRule ^doctors/(.+)-md /pages/$1 [R=302]

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