.htaccess 404,URL中带有空格

.htaccess 404,URL中带有空格,.htaccess,apache2,http-status-code-404,.htaccess,Apache2,Http Status Code 404,我意识到雅虎搜索不能正确处理URL中的空格 当用户单击转到包含空格的“我的网站”页面时,yahoo会将其替换为“+”符号 我的服务器无法正确处理“+”而不是“”,并生成404错误 那么,如何使用.htaccess将“+”替换为“”?可以使用+符号对空间进行URL编码。多年来,它一直是标准的一部分,Apache2肯定知道如何将+解码到空间。可能发生的情况是+本身被编码为%2B,您可以使用以下方法将其更改为空格: RewriteEngine On RewriteRule ^(.*)\+(.*)$ /

我意识到雅虎搜索不能正确处理URL中的空格

当用户单击转到包含空格的“我的网站”页面时,yahoo会将其替换为“+”符号

我的服务器无法正确处理“+”而不是“”,并生成404错误


那么,如何使用.htaccess将“+”替换为“”?

可以使用
+
符号对空间进行URL编码。多年来,它一直是标准的一部分,Apache2肯定知道如何将
+
解码到空间。可能发生的情况是
+
本身被编码为
%2B
,您可以使用以下方法将其更改为空格:

RewriteEngine On
RewriteRule ^(.*)\+(.*)$ /$1\ $2 [L]

为什么页面的URL中有空格?我的印象是,这是一个糟糕的形式,有很多原因,包括你提到的那个……当然,这是糟糕的。但我不能改变它们。有什么建议吗?你的服务器是如何编码空间的?通常我认为它们被编码为
%20
,但是如果你的服务器做的不同,这可能就是为什么Yahoo要替换空格(它不承认它们是这样的)。@Matt是的,它们被编码为%20,Google处理得很好。也许雅虎做了一些转换。我需要将“+”替换为“”。Yahoo搜索的URL是什么?你能举一个例子说明如何将其放入这样的内容中:RewriteRule^client/([a-z0-9]+)$index.php?client=$1[L]