Apache htaccess RewriteRule将“+”换成“ - ”

时间:2014-03-11 00:03:56

标签: regex apache .htaccess mod-rewrite redirect

在受雇于审查旧系统的SEO公司的要求下,我们需要将所有旧URL(下面的示例)从使用“+”更改为“ - ”。系统是动态的,并且没有这些链接存储,但如果这些文章/页面在某处发布,如果以编程方式进行更改,他们担心它看起来像破坏的页面。因此他们希望在htaccess文件中使用301s干净利落地完成它。

旧网址示例:

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]

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

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]