如何在.htaccess中将空格(%20)替换为下划线(_)?(基于PHP)
替换URL中的空格为下划线的.htaccess规则修改方案
你只需要把现有规则里替换目标的连字符(-)改成下划线(_)即可,修改后的完整规则如下:
RewriteRule "^(\S*) +(\S* .*)$" $1_$2 [N,NE] RewriteRule "^(\S*) (\S*)$" $1_$2 [L,R=302,NE]
规则说明:
- 第一条规则:匹配URL里的多个连续空格,每次把第一个空格替换为下划线,
[N]标记会让规则循环执行,直到所有空格都被替换完毕;[NE]标记保证URL中的特殊字符不会被二次编码。 - 第二条规则:处理最后一组空格(或单个空格),替换为下划线后通过
[R=302]返回临时重定向,[L]标记表示这是最后执行的规则,避免后续规则干扰。
注意事项:
- 要确保服务器已经启用
mod_rewrite模块,否则规则无法生效。 - 如果需要永久重定向(更利于SEO),可以把
R=302改成R=301。 - 规则里的
\S代表非空白字符,+匹配一个或多个空格,能覆盖连续空格的场景。
内容的提问来源于stack exchange,提问作者Robbie Rao
相关产品推荐
相关产品推荐

