我不知道“可选参数”这个词是否正确描述了我的情况。这就是我需要的。
我为URL重定向编写了以下规则:
RewriteRule ^product/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)$ product/?sid=$2&pid=$3&title=$1&src=$4 [NC,L]
基本上,这会重定向类似
的内容http://localdomain.com/product/Golf-Bats/abc123/def456/stringy
类似
http://localdomain.com/product/?sid=abc123&pid=def456&title=Golf-Bats&src=stringy
我想要做的是编写一个规则,该规则接受额外的/可选的/可能无限数量的参数(//类型构造),但仍然重定向到相同的URL。
这意味着以下网址:
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1/rand2
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1/rand2/rand3
etc.
应该只指向URL
http://localdomain.com/product/?sid=abc123&pid=def456&title=Golf-Bats&src=stringy
有什么想法吗?
答案 0 :(得分:3)
使用此规则 - 它将使第6个和更多路径段“可选”:
RewriteRule ^product/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)/([a-z0-9\-]+)(/.*)?$ product/?sid=$2&pid=$3&title=$1&src=$4 [NC,L]
此规则会将所有这些网址视为相同(将重定向到同一网址):
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1/rand2
http://localdomain.com/product/Golf-Bats/abc123/def456/stringy/rand1/rand2/rand3
我已在模式中将A-Za-z
替换为a-z
,因为您已经有[NC]
标记(忽略大小写)。
请注意,从SEO的角度来看,这种类型的网址一般都不好 - 我强烈建议您使用<link rel="canonical" href="PROPER_URL" />
指定正确的网址,以避免搜索引擎对内容造成重复损失:
根据要求,“可选”部分将丢失/不会传递到新网址。