我想“捕获”进入URL的传入URL,这些URL带有多余的“%252F”字符(由于某些历史原因),并将它们重定向(301)到不包含这些字符的相同URL。例如:
传入网址:www.sample.com/content/%252F/foo
.htaccess规则之后:www.sample.com/content/foo

我必须能够在url中的同一位置捕获这些字符的多个实例,例如:www.sample.com/content/%252F/%252F/%252F/foo并将其全部删除。

我应该使用哪个.htaccess RewriteRule?

最佳答案

AFAIK RewriteRule必须知道传入请求URL的精确格式。因此,不支持在其中包含任意数量的%252F字符串。

但是,您可以做的是创建一个自定义404页面,该页面解析%252F的请求URL。自定义404页面将遵循以下逻辑:

Search the request URL for %252F
  If found, replace it with a / (or nothing, up to you) and return a 301 header
    and an appropriate error page.
  Else return a 404 header and appropriate error page.

那应该给你想要的效果。
不用担心多余的斜线,apache会忽略它们。

10-06 05:15