.htaccess 使用htaccess替换特殊URL中的空间
我可以使用以下方法将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
%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/…