使用301重定向将旧的动态网址更改为新格式

时间:2016-05-01 13:07:20

标签: .htaccess redirect seo

任何人都可以帮我改变旧的动态网址格式吗?

准确地说,我需要在网址中将下划线_更改为连字符,但使用301重定向 在htaccess中重定向,如:

  • example.com/posts/22_keyword/33_this_is_the_example_of_old_url.html

我希望它是:

  • example.com/posts/22-keyword/33-this-is-the-example-of-old-url.html

我知道如何在php中更改它,但我需要使用301重定向从旧的url格式到新的 在htaccess所以我不会在谷歌上失去排名。

以下是当前的htaccess信息:

RewriteRule ^posts/([0-9]+)([-_][^/]*)?/([0-9]+)([-_][^/]*)?/([0-9]+)([-_][^/]*)?\.html   index.php?view=showad&adid=$7&cityid=$1 [QSA]

转换为:

  • 文章/ 3_keyword / 6_keyword / 235530_this_is_the_example_of_old_url.html

我不熟悉mod重写,我猜这个对于那些了解它的人来说很容易因为 所有需要做的就是从_改为 -

1 个答案:

答案 0 :(得分:0)

您可以使用此递归规则将_转换为-

RewriteEngine On

# using internal rewrites replace all _ by -
RewriteRule ^([^_]+)_(.+?\.html)$ $1-$2 [NC,DPI,E=underscores:1]

# one final redirect to change URL in browser 
RewriteCond %{ENV:underscores} =1
RewriteRule ^([^_]+)$ /$1 [R=302,NE,L]