使用htaccess和mod_rewrite有条件地使url段大写

时间:2017-06-23 11:25:06

标签: regex apache .htaccess mod-rewrite

我正在尝试重写我的网址以执行以下操作:

如果网址的最后一段以“p”开头,后跟一个数字,则该P应为大写。

所以:domain.com/path/to/something/p112应该变为domain.com/path/to/something/P112,但domain.com/p123/something/else不应成为domain.com/P123/something/else

我知道如何简单地替换字符,但我不知道如何将其限制为最后一段,并且只有在匹配某种模式时才适用:

RewriteRule ^(.*)p(.*)$ /$1P$2 [L,R=301]

1 个答案:

答案 0 :(得分:1)

您可以使用此规则:

RewriteRule ^(.+)/p(\d+/?)$ /$1/P$2 [L,R=301,NE]
  • .+贪婪,因此在匹配上一个/之前匹配最长匹配。
  • \d+将匹配1位或更多位数。