htaccess 重写查找 slug 的一部分并将其删除

htaccess rewrite find part of the slug and remove it

我有这样的帖子:

http://example.com/blog/post-title

我想将其转换为

http://example.com/post-title

使用 htaccess

我试过了:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com/blog/([^\s\?]+)\s [NC]
RewriteRule ^(.*)$ http://example.com/ [L,R=301,NC]

在这种情况下,您可以指定两个 捕获组(使用括号)并且仅return第二个两组。

示例:

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule ^(blog)/(.+) http://example.com/

</IfModule>

重写规则的工作原理如下:

如果...

  • url 以 blog
  • 开头
  • 其次是/
  • 后跟 至少一个或多个字符

然后重写 URL,使域后跟 /,然后是在第二次捕获中捕获的 一个或多个字符组.

N.B. 您不需要 [R=301] 标志,因为提供了完整的重定向(即以http://https:// 协议)隐含地表明这将是一个 301 重定向.