Htaccess 以某种方式自动删除 url 末尾的所有尾随斜杠并只保留一个。
例如 http://localhost/api/param1/// 变为 http://localhost/api/param1/
您能告诉我为什么会发生这种情况以及如何消除这种情况吗? (.*) 应该匹配所有内容,对吗?但事实并非如此。就像我说的,如果我去 http://localhost/api/param1///
$_GET['url']
应该是 param1///
但它是 param1/
。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Apache 自动将多个斜杠以
RewriteRule
模式剥离为单个斜杠。
如果您想捕获多个斜杠,请使用
RewriteCond
代替:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^/(.*)$
RewriteRule ^ index.php?url=%1 [QSA,L]
我遇到了这个问题,解决方案是这样的:
RequestConfig requestConfig = RequestConfig.custom() .setNormalizeUri(false) .build();
只是 .setNormalizeUri(false) 是重点。
并将其 (requestConfig) 传递给 HttpClients,如下所示:
HttpClients.custom() .setDefaultRequestConfig(requestConfig) .build();