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

时间:2016-02-12 15:15:41

标签: regex .htaccess regex-lookarounds

我有xxxx的URL,格式如下:

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

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

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

我想从

重定向所有网址

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

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

3 个答案:

答案 0 :(得分:2)

请尝试以下方法:

RewriteEngine On

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

在这里,我们正在检查包含([\w-]+)的字母,数字,下划线和连字符,带有(\d+)的数字以及带有/?的可选斜杠,只是为了确定,然后重新定向它。

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

答案 1 :(得分:1)

您可以使用此.htaccess文件:

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

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

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

答案 2 :(得分:0)

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

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