2

我不知道“可选参数”这个词是否正确描述了我的情况。这是我需要的。

我为 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。

这意味着以下 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

有任何想法吗?

4

1 回答 1

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]

此规则会将所有这些 URL 视为相同(将重定向到相同的 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
  1. 我已经替换A-Za-za-zin 模式,因为您已经有了[NC]标志(忽略大小写)。

  2. 请记住,从 SEO 的角度来看,这种 URL 通常并不好 - 我强烈建议使用<link rel="canonical" href="PROPER_URL" />指定正确的 URL 以避免搜索引擎的重复内容惩罚:

  3. 该“可选”部分将丢失/不会根据要求传递给新 URL。

于 2011-08-08T11:46:25.957 回答