我正在处理一个有趣的情况。这是正在发生的事情:
当前网址示例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重定向/正则表达式来解决这些问题?
答案 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