重定向 slug,将 plus 替换为破折号

Posted

技术标签:

【中文标题】重定向 slug,将 plus 替换为破折号【英文标题】:Redirect slug, replace plus for dashes 【发布时间】:2014-09-27 00:32:59 【问题描述】:

我有一个重写问题。它让我疯狂。我在 wrpdress 中创建了一个新网站。我想将旧网址(在谷歌中)重定向到新网址。除了以下网址(旧网址中有一个加号)之外,它工作正常

www.domain.com/slugname/this+is+a+slug

必须改写为:

www.domain.com/slugname/this-is-a-slug

如何将加号替换为破折号(.htacces?add_rewrite_rule?)

Sombody 有示例代码吗?

我在 worpdress 中尝试了 .htacces 一个 add_rewrite_rule,但我不够聪明;)

【问题讨论】:

【参考方案1】:

如果您愿意为每个 URL 单独执行此操作,那么您的 .htaccess 文件中的以下内容(文件拼写正确很重要)应该可以工作:

RewriteRule ^oldpage$ http://www.example.org/newpage? [R=301,L]

所以你的例子可能是:

RewriteRule ^slugname/this+is+a+slug$ http://www.example.org/slugname/this-is-a-slug? [R=301,L]

规则的R=301 部分使重定向永久化,我认为这是预期的效果。删除它会使重定向成为302,这被称为临时。


如果您希望将 URL 中的所有 + 替换为 -,那么您可以使用通用语句:

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

【讨论】:

感谢您的快速反应!但是大约有 1000 个链接在 url 中有这个加号,所以一个通用的解决方案会很棒。 没问题,这应该更容易。我已经用第二种解决方案更新了答案。【参考方案2】:

WordPress 中有一个名为Redirection 的插件,它允许您将旧链接重定向到新链接。尝试在 .htaccess 中执行此操作需要很多麻烦。您可以在插件上使用正则表达式。 安装后,可以在工具菜单下找到该插件。

【讨论】:

好吧,我安装了它:原始 url 类似于:/blabla/7878/blabla+blalbal 在重定向模块中我使用这个 /blabla/(.*d)/(.*?) +(.*?) 并将其重定向到 /blabla/$2-$3 它不起作用。我的正则表达式是什么?我做错了什么

以上是关于重定向 slug,将 plus 替换为破折号的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 无法将文章 ID 重定向到使用 php slug 函数生成的文章 slug

Laravel 4 重定向 Slug

如何解决DedeCMS 5.7SP1 /plus/download.php url重定向漏洞

Next.js:我们如何将动态路由重定向到静态页面?

.htaccess 使用 php slug 重定向

带有更新的 slug 的 Django 通用视图 UpdateView 重定向 URL