正则表达式重定向/ 301

时间:2013-02-05 16:36:46

标签: apache redirect

我正在处理一个有趣的情况。这是正在发生的事情:

当前网址示例1:

www.domain.com/red-widgets-cid-1234.html

www.domain.com/red-widgets-cid-1234-1.html

www.domain.com/red-widgets-cid-1234-1-1.html

所有以上网址上的规范:

www.domain.com/red-widgets-cid-1234.html

New URL:
www.domain.com/red-widgets-cid-4567.html

当前网址示例2:

www.domain.com/red-widgets-cid-1234+10.html

www.domain.com/red-widgets-cid-1234+10-1.html

www.domain.com/red-widgets-cid-1234+10-1-1.html

所有以上网址上的规范:

www.domain.com/red-widgets-cid-1234+10.html

New URL:
www.domain.com/red-widgets-cid-6789.html

我想确保上述网址的所有变体都重定向到新网址。我可以用什么通配符301重定向/正则表达式来解决这些问题?

1 个答案:

答案 0 :(得分:0)

试试这个(尚未测试过):

  # (perhaps you need to escape "+" as "\+",
  # - can you really have a "+" in the URL?)

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10+5(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/american-red-widgets-cid-6789+5%1.html [QSA,L]

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234+10(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-6789%1.html [QSA,L]

  RewriteCond %{REQUEST_URI} ^/red-widgets-cid-1234(.*).html [NC]
  RewriteRule (.*) %{HTTP_HOST}/red-widgets-cid-4567%1.html [QSA,L]

主要是首先测试最长的“常见”URL %1表示来自上一个RewriteCond的第一个正则表达式 $1表示当前RewriteRule的第一个regexp表达式。

NB!如果RewriteCond捕获的所有网址的新网址都相同,则应跳过%1,只有在您需要时才需要american-red-widgets-cid-6789+5-1.html

red-widgets-cid-1234+10+5-1.html