【问题标题】:.htaccess 301 redirect regular expression from DotNetNuke to Wordpress.htaccess 301 将正则表达式从 DotNetNuke 重定向到 Wordpress
【发布时间】:2014-01-22 13:01:28
【问题描述】:

我正在将一个旧的 DotNetNuke 网站迁移到 Wordpress,尽管旧网站的架构确实很糟糕并且经常崩溃 - 该网站有相当多的 SEO 信誉。所以,我不想丢失任何东西,但是正则表达式正在为基于 .htaccess 的 301 重定向杀死我。

这是一个旧域帖子的示例:

http://yoursite.com/tabid/57/listid/4379/Home++Garden/Life+in+Shambles+How+to+Be+Organized.aspx

这是新的外观:

http://newsite.com/tgesting-new-functionality/

任何帮助将不胜感激。我正在帮助网站上的一位朋友(这不是我的),我根本不想让他退缩,而且我对 RegExs 不太满意。

谢谢!

【问题讨论】:

  • 内容是否已经导入并定义了url结构??
  • @QQQ 是的——我很抱歉。所有内容都很重要,现在定义了 URL 结构。从上面的示例中,该帖子的名称是“如何组织生活在混乱中”。使用新的 URL 结构,它将是“混乱的生活-如何组织起来”。
  • 好吧,捕捉最后一个 / 和后缀 .aspx 之间的部分相当容易——但将其“翻译”为小写超出了 RewriteRule 的能力(可能使用RewriteMap,但这在.htaccess 上下文中不可用),并且将所有空格转换为破折号也不是那么简单。您可能最好设置一个脚本,将新重写结构未捕获的所有内容传递给它,然后在必要的字符串操作后自行重定向。

标签: php regex wordpress .htaccess redirect


【解决方案1】:

用于重定向

http://yoursite.com/tabid/57/listid/4379/Home++Garden/Life+in+Shambles+How+to+Be+Organized.aspx

http://newsite.com/life-in-shambles-how-to-be-organized/

您必须在虚拟主机配置中的服务器配置中进行设置

RewriteMap lowercase int:tolower

在您的.htaccess 文件中

RewriteEngine On
RewriteRule ^([^+]*)\+(.*)$ $1-$2 [L]

RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lowercase:$1}" [NC]
RewriteRule /([^/+]+)\.aspx http://newsite.com/$1/ [R=301,L]

RewriteMap 指令定义了一个可在规则替换中使用的重写映射。

RewriteRule ^([^+]*)\+(.*)$ $1-$2 [L] 将所有 + 替换为 -

RewriteRule "(.*)" "${lowercase:$1}" [NC]转小写

RewriteRule /([^/+]+)\.aspx http://newsite.com/$1/ [R=301,L]做重定向

如果您需要将连续的 + 替换为单个 -,只需使用 RewriteRule ^([^+]*)[+]+(.*)$ $1-$2 [L] 而不是 RewriteRule ^([^+]*)\+(.*)$ $1-$2 [L]

【讨论】:

  • 您将需要创建另一个 RewriteMap 来处理所有 +- 中,因为您只会在前 2 个中这样做。
  • 伟大的大奖赛!它可能是另一种形式。没有必要。第一次重写进行重定向(L 在找到匹配时将其设置为最后一条规则)循环,直到所有 + 被替换。但是为此使用 RewriteMap 可能会提高服务器性能
  • 让它进行多次重定向并不简单,因为您需要考虑几件事,包括内存、性能、重定向数量和限制,将双加号替换为单个加号或者更确切地说,按照您的示例双破折号变成单破折号,因为它会转换所有等,这就是为什么即使使用 RewriteMap 我也不认为这是一个选项我认为这项工作的整体负载不合适。
  • 可能是,但是请求了基于 htaccess 的 301 重定向解决方案,并且此代码适用于提供的案例示例
  • 确实,只要 URL 的最后一部分没有双加号并且用户可以访问服务器配置,它应该可以正常工作
猜你喜欢
  • 2018-05-31
  • 2012-06-21
  • 2017-06-21
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 2015-01-30
相关资源
最近更新 更多