2012-05-06 61 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

謝謝你試圖幫助,讚賞。不幸的是,這並沒有消除不需要的?數據 –

相關問題