0

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

当前 URL 示例 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

当前 URL 示例 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

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

4

1 回答 1

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表示 last 的第一个正则表达式RewriteCond
$1表示来自 current 的第一个正则表达式RewriteRule

注意!如果 RewriteCond 捕获的所有 URL 的新 URL 都应该相同,则应该跳过%1,这仅在您需要时才需要,american-red-widgets-cid-6789+5-1.html例如red-widgets-cid-1234+10+5-1.html

于 2013-02-05T19:09:50.110 回答