Regex ApacheHTAccess重写交换规则“+&引用;至于-&引用;
在被雇来审查旧系统的SEO公司的请求下,我们需要将所有旧URL(下面的示例)从使用“+”改为“-”。系统是动态的,这些链接都没有被存储,但是如果这些文章/页面被发布到某个地方,他们担心如果以编程方式进行更改,这些链接看起来像是断页。因此,他们希望使用htaccess文件中的301s干净地完成这项工作 旧URL的示例:Regex ApacheHTAccess重写交换规则“+&引用;至于-&引用;,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,在被雇来审查旧系统的SEO公司的请求下,我们需要将所有旧URL(下面的示例)从使用“+”改为“-”。系统是动态的,这些链接都没有被存储,但是如果这些文章/页面被发布到某个地方,他们担心如果以编程方式进行更改,这些链接看起来像是断页。因此,他们希望使用htaccess文件中的301s干净地完成这项工作 旧URL的示例: domain.com/Articles/Charter+Day+in+PA/ domain.com/Things+To+Do/ domain.com/Search/Things
domain.com/Articles/Charter+Day+in+PA/
domain.com/Things+To+Do/
domain.com/Search/Things+To+Do/
domain.com/things+to+do/Brandywine+River+Museum/
to:
domain.com/Articles/Charter-Day-in-PA/
domain.com/Things-To-Do/
domain.com/Search/Things-To-Do/
domain.com/things-to-do/Brandywine-River-Museum/
因此,我在htaccess文件中放置了以下内容,但它似乎不起作用:
RewriteEngine on
RewriteRule ^(.*?)\+(.*?[^\+]*?\+.*)$ $1-$2 [N]
RewriteRule ^(.*?)\+(.*?[^\+]*)$ $1-$2 [R=301]
RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
感谢您的帮助 您可以使用以下代码:
RewriteEngine on
RewriteRule "^([^+]*)\++([^+]*\+.*)$" /$1-$2 [L]
RewriteRule "^([^+]*)\+([^+]*)$" $1-$2 [L,R=301]
RewriteCond %{HTTP_HOST} !^www
RewriteRule (.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
^(.*?)\+(.*?[^\+]*?\+.*)$
是一种非常复杂的书写方式。这里的“不工作”是什么意思?页面是否挂起(例如,从不输出任何内容)或者您是否因为页面不存在而获得404?如果页面挂起(并且某些内容正在填充您的apache错误日志),则将DPI标志添加到您的N
规则中可能会有所帮助(将[N]
更改为[N,DPI]
)“不起作用”指旧URL不会更改为新URL的情况。