0

我有一堆未生成的 URL,我想将它们重定向到正确的 URL。

这是一个很好的例子:

http://example.com/search/?q=searchterm%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F&scope=45%2F%2F%2F%2F%2F/

我已经可以使用以下规则重定向它们中的大多数:

    重写条件 %{QUERY_STRING} ^(.*)%2F
    重写规则 ^search/$ /search/?%1 [NE,R=301,L]

据我了解,这仅有效,因为删除了尾随的“%2F”,然后规则再次命中。Google 只接受有限数量的重定向。

所以我尝试调整规则以处理 1 次或多次出现的“%2f”

这是我走了多远:

    RewriteCond %{QUERY_STRING} ^(.*)((%2F)*)
    重写规则 ^search/$ /search/?%1 [NE,R=301,L]

结果是:/search/?q=searchtermFFFFFFFFFFFFFFFF&scope=45FFFFF/

我错过了什么?

最好的问候,亚历山大

4

1 回答 1

1

如果您只有两个查询参数,这可能会起作用(当然,如果您有更多或更少,它可以调整):

# %1 Matches everything until the first group of %2F
# %2 Matches everything after the first group %2F until the second group
RewriteCond %{QUERY_STRING} ([^%2F]*)[%2F]*([^%2F]*)[%2F]*
RewriteRule ^search/$ /search/?%1%2 [NE,NC,R=301,L]

希望有帮助。

于 2012-07-03T12:56:22.073 回答