.htaccess使用%20将所有URL重定向到-

.htaccess使用%20将所有URL重定向到-,.htaccess,redirect,replace,.htaccess,Redirect,Replace,我遇到了重复URL的问题,例如: /term/this-is-the-term /term/this%20is%20the%20term 我已经通过确保所有链接都使用-解决了这个问题 现在我想用%20重定向任何已索引的url,这样这个问题就从Google网站管理员那里消失了(并且实际上已经解决了) 如何使用%20将任何url重定向到- 我知道简单重定向的基本原理,但我觉得这只能通过使用正则表达式来实现,我对正则表达式不太熟悉 有什么提示吗?试试: RewriteEngine On Rewrit

我遇到了重复URL的问题,例如:

/term/this-is-the-term
/term/this%20is%20the%20term
我已经通过确保所有链接都使用
-
解决了这个问题

现在我想用
%20
重定向任何已索引的url,这样这个问题就从Google网站管理员那里消失了(并且实际上已经解决了)

如何使用
%20
将任何url重定向到
-

我知道简单重定向的基本原理,但我觉得这只能通过使用正则表达式来实现,我对正则表达式不太熟悉

有什么提示吗?

试试:

RewriteEngine On
RewriteRule ^(.*)\ (.*)$ /$1-$2 [L,R=301]
这会将任何带有空格(%20)的内容重定向为使用破折号。您需要将该规则放在文档根目录的htaccess文件(或您希望应用该规则的任何目录)中的任何其他规则之前

要将此应用于查询字符串(在
之后的所有内容),您需要执行一些特殊操作:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)%20(.*)$
RewriteRule ^(.*)$ /$1?%1-%2 [L,R=301,NE]

这里有一条规则,将用连字符替换所有空格,无论空格是在查询字符串中还是在URI中:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+([^%20]*)%20([^\s]*) [NC]
RewriteRule ^ /%1-%2 [L,NE,R]

我认为最好的办法是:

Redirect 301 "/term/this is the term" "http://yourdomain.com/term/this-is-the-term"

但是使用重写实际上会重定向到另一个url吗?或者它只会这样读-编辑-我正在尝试此url未被重定向:
/term/?search=cocinar&termtext=queso cheddar
@tonimichelcaubit将重定向此URI。您拥有的是查询字符串的一部分,这需要它自己的特殊规则您是否尝试过:
/term/这是%20term
/term/?search=cocinar&termtext=queso cheddar
?我刚刚用这两个URL重新测试了这段代码,并用连字符替换了所有空格。您的.htaccess中还有其他一些规则吗?