重定向 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