2015-07-21 53 views
1
重定向URL通配符

我的網站是不是很久以前黑客入侵,大量的URL以下列格式創建:如何使用htaccess的

http://example.com/prematurely.asp?skin=pspfsffdproblems=nq.... 

有反正我也可以把所有這些通配符網址基於prematurely.asp到單個頁面?例如:

http://example.com/newpage 

.htaccess文件如下:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^nowcosmetic\.co.uk$ [NC] 
RewriteRule ^(.*)$ http://nowcosmetic.co.uk/$1 [R=301,L] 
RewriteCond %{REQUEST_URI} ^/questions-and-answers\.html$ 
RewriteRule .* http://nowcosmetic.co.uk/botox.html [R=301,L] 
RewriteRule ^prematurely\.asp /botox? [R=301,L]' 
+0

如果這些網址是黑客攻擊(現已被清理),現在的結果已經不再存在,那麼你最好只是讓這些URL失敗,404(或410),而不是重定向。重定向會將錯誤的消息發送給搜索引擎。 – MrWhite

+0

我認爲這將解決您的問題 'RewriteEngine敘述在 的RewriteCond%{} THE_REQUEST /prematurely\.asp\?skin=([^=]+)=([^\s]+)[NC] 重寫規則^ http://example.com/newpage? [NE,NC,R,L]' – starkeen

回答

0

您可以通過添加一個重寫規則

RewriteEngine on 
RewriteRule ^prematurely/(.*) /newpage [R=301,L] 
+0

'RewriteRule'模式末尾的'(。*)'是多餘的,而且OP想要匹配「prematurely.asp」,而不是「過早地/」。這也會將查詢字符串傳遞到目標URL上,這可能是不可取的 - 你需要在'RewriteRule'替換末尾加上'?'來省略這個。 – MrWhite

+0

嘗試羅恩的建議,但它仍然都到了404 http://nowcosmetic.co.uk/prematurely.asp?skin=DdfNJ&problems=RV_lP&page=253079 –

0

正如在評論中提到,如果這些網址都是這樣做現在已經解決了被黑網站的結果,那麼你最好(SEO明智)服務404(或410 Gone)而不是重定向。

但是,如果你仍然想重定向...

重定向基於prematurely.asp單個頁面

在頂部所有這些通配符的網址您.htaccess文件(在你的文檔根目錄):

RewriteEngine on 
RewriteRule ^prematurely\.asp /newpage? [R=301,L] 

注意RewriteEngine On應該只出現一次在您的文件中(在頂部)。

這只是針對符合「prematurely.asp」(忽略查詢字符串 - 根據您的要求)。 RewriteRule替代的結尾?會從重寫的URL中去除原始查詢字符串。

+0

嗨。仍然沒有快樂。我已經添加了我的htaccess這裏: 選項+的FollowSymLinks RewriteEngine敘述 在 的RewriteCond%{HTTP_HOST}^nowcosmetic \ .co.uk $ [NC] 重寫規則^(。*)$ http://nowcosmetic.co .UK/$ 1 [R = 301,L] 的RewriteCond%{REQUEST_URI}^/問題和 - 答案\ html的$ 重寫規則。* http://nowcosmetic.co.uk/botox.html [R = 301, L] RewriteRule ^過早\ .asp/botox? [R = 301,L] –

+0

你可以編輯你的問題並在那裏添加代碼 - 它會更容易閱讀和保留其格式。謝謝。 – MrWhite

+0

我用htaccess代碼更新了原始問題。 –