.htaccess使用%20重定向所有网址 -

时间:2013-11-05 20:02:33

标签: .htaccess redirect replace

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

/term/this-is-the-term
/term/this%20is%20the%20term

我已经通过确保所有链接使用-而不是

来解决

现在我想重定向任何带有%20的索引网址,以便Google网站管理员解决问题(实际上已经解决了)

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

我知道简单重定向的基础知识,但我闻到这只能使用正则表达式来实现,我不太熟悉,

任何提示?

3 个答案:

答案 0 :(得分:6)

尝试:

RewriteEngine On
RewriteRule ^(.*)\ (.*)$ /$1-$2 [L,R=301]

重定向任何带空格(%20)的内容,而不是使用短划线。您需要在中将之前的任何其他规则放在文档根目录中的htaccess文件中(或者您希望它应用于的任何目录中)。

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

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

答案 1 :(得分:0)

这是一个单一的规则,将用连字符替换所有空格,无论空格是否在URI中的查询字符串OR中:

RewriteEngine On

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

答案 2 :(得分:0)

我认为最好的方法是:

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