我正在将一个旧的 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/
任何帮助将不胜感激。我正在网站上帮助一位 friend (这不是我的),我根本不想让他失望,而且我对正则表达式不太熟悉。
谢谢!
最佳答案
用于重定向
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]
关于php - .htaccess 301 将正则表达式从 DotNetNuke 重定向到 Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927702/