2012-05-06 62 views
0

有人正在创建错误的链接添加一个问号和随机字符在我的网站在以下格式的随机页面:重写规则,从URL中移除的查询字符串和重定向

  • www.mydomain.com/ ?57237933(只有数字)
  • www.mydomain.com/folder1/ ?709d0c24941(字母)
  • www.mydomain.com/folder1/page-name/ ?20?9h572(双待标记)

我发现了robots.txt的阻止规则,但需要更强大的htaccess解决方案。我正在寻找一个htaccess重写规则,可以从任何URL中删除?及其后的所有内容,将访问者重定向到原始URL。

我找到了解决方案来删除,例如,?id=123,但是当id=不存在时,我还没有找到解决方案。

+0

首先停止'创建'将是一个更好的解决方案 – 2012-05-06 21:05:09

+0

这些请求有什么问题,它们通常不会受到伤害(并且不需要重定向)。 – hakre

+0

我希望我能找到它的来源,但这是一个相对较新而持久的事件。这当然是异地,我的网站是完全静态的。我宁愿先加强我的现场防守。 –

回答

0

以下两条规则检查查询字符串的存在,并重定向到没有查询字符串版本的页面:

RewriteCond %{QUERY_STRING} !="" 
RewriteRule ^(.*) /$1? [R,L] 

既然你担心搜索引擎抓取页面的错误版本,考虑改变到R=301一旦你测试完毕。此外,您可能需要考虑返回404错误以阻止查询字符串的使用,并告诉搜索引擎不存在http://mydomain.com/page/?1234之类的内容。

+0

太棒了,谢谢。我改变了$ 1?到http://www.mydomain.com/$1?并添加了R = 301。在不添加完整URL的情况下,它将用文件路径替换?1234。 –

+0

只记得,根据文档:重定向时,你需要指定一个_valid URL_。你可以省略'http:// mydomain.com',但你需要领先的'/'。 –

+0

谢谢萨尔曼。 –

0

我现在无法测试,但我认为这将是解决您的问题的方法。

RewriteRule ^([^?]+)\?.*$ $1 [L] 

请验证它,并告诉我它是否可以。

+0

谢谢你试图帮助,赞赏。不幸的是,这并没有消除不需要的?数据 –

相关问题