.htaccess 使用htaccess替换特殊URL中的空间

.htaccess 使用htaccess替换特殊URL中的空间,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我可以使用以下方法将url中的所有%20替换为-: .htaccess: RewriteRule "^(\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302] RewriteRule "^(\S*)\s+(\S*\s+.*)$" $1-$2 [L] # remove multiple hyphens RewriteRule ^(.*)-{2,}(.*)$ /$1-$2 [L,R=302] 现在我只想为所需的url做这项工作不是全部,url类似于: Example.com/blog

我可以使用以下方法将url中的所有
%20
替换为
-

.htaccess:

RewriteRule "^(\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302]
RewriteRule "^(\S*)\s+(\S*\s+.*)$" $1-$2 [L]
# remove multiple hyphens
RewriteRule ^(.*)-{2,}(.*)$ /$1-$2 [L,R=302]
现在我只想为所需的url做这项工作不是全部,url类似于:

Example.com/blog/Example%title=>Example.com/blog/Example title

Example.com/product/Example%product=>Example.com/product/Example-product

如何使用
.htaccess
完成此操作

编辑:

主要问题是,当我向服务器上载名为
image 1.jpg
url的%图像时,会将我重定向到名为
image-1.jpg
,而服务器找不到要显示的图像

编辑2

my.htaccess事先有以下代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

您可以在规则中放置已知前缀:

RewriteRule "^((?:blog|product)/\S*)\s+(\S*)$" /$1-$2 [L,NE,R=302,NC]

RewriteRule "^((?:blog|product)\S*)\s+(\S*\s+.*)$" $1-$2 [L,NC]

# remove multiple hyphens
RewriteRule ^((?:blog|product)/.*)-{2,}(.*)$ /$1-$2 [L,R=302,NE,NC]

没用!我测试了这个url:
site.com/blog/one/64/how%to%relax
。我想成为
/blog/one/64/如何放松
。空格字符是
%20
而不是
%
。我已经用
http://localhost/blog/one/64/how%20to%20relax
已正确重定向到
http://localhost/blog/one/64/how-to-relax
我的意思是
%20
,那是印刷错误。我在.htaccess中完全复制了您的代码,但没有工作。最后,我将您的代码移到了
.htaccess
中我之前所有的代码之上,它工作了!我不知道原因是,实际上所有重定向规则都应该放在内部重写规则之前,因为
RewriteRule^(.*)$index.php/$1[L]
将所有URI更改为
index.php/…