.htaccess - 用正斜杠替换最后一个连字符(在许多连字符中)[正则表达式?]

.htaccess - replacing last hyphen (out of many) with a forward slash [regex?]

我有 xxxx 个格式如下的 URL:

http://www.example.com/sub/worda-wordb-wordc-123456789

但是我有指向我网站的外部链接,其 URL 格式如下:

http://www.example.com/sub/worda-wordb-wordc/123456789

我想重定向来自

的所有 URL

http://www.example.com/sub/worda-wordb-wordc/123456789

http://www.example.com/sub/worda-wordb-wordc-123456789

您可以使用这个 .htaccess 文件:

RewriteBase /
RewriteRule ^sub/(.*)/([0-9]+)$ /sub/-

现在,如果您转到 http://www.example.com/sub/worda-wordb-wordc/123456789,url 将被重写为 http://www.example.com/sub/worda-wordb-wordc-123456789

如果这不是您要查找的内容,请在您的问题中添加更多详细信息。

请尝试以下操作:

RewriteEngine On

# Redirect URI with last slash, replacing with hyphen
RewriteRule ^sub/([\w-]+)/(\d+)/?$ /sub/- [R=302,L]

在这里,我们正在检查字母、数字、下划线和连字符 ([\w-]+),数字 (\d+) 和末尾的可选斜杠 /?,只是为了确定,然后相应地重定向它。

确保将此作为您的首要规则之一,然后将 302 更改为 301 以使浏览器和搜索引擎缓存重定向。

您可以在站点根目录 .htaccess 中使用此规则:

RedirectMatch 301 ^(sub)/(.*)-(\d+)/?$ ///