2013-05-21 162 views
0

由於一些不良網址,我們生成了一些不起作用的鏈接,我想用301重定向重定向它們以清除Google的一些網站管理員工具問題。Htaccess不工作 - 重定向301

所以,我們有這個網址是這樣的:

http://www.site.com/subdomain/z//-products 

*請注意,子域是可變的,URL的其餘部分是靜態的。

作爲一個側面說明,這個URL沒有任何意義,這就是爲什麼我要重定向它。它應該是這樣的:

http://www.site.com/bedroom/z/12345/bedroom-furniture-products 

無論如何,我們有這些不良網址是動態生成的。我們已經修復了這些問題,但谷歌收集它們並繼續嘗試抓取它們。我想創建一個htaccess規則來301重定向它們,最終這個問題應該會被清除。

這就是我試圖與htaccess的不得要領:

^(.*)/n//-products/?$ $1 [R=301,B] 

我也試過各種排列這和它不工作。我懷疑這是一個實體轉義問題,但是我的研究讓我添加了[B],但這似乎也不起作用。這就像重定向規則正在工作,但它只是重定向到原始頁面。

我在這裏失蹤了什麼?

+0

很明顯,從這個糟糕的URL'/ subdomain/z // - products'我們不能重定向到'/ bedroom/z/12345/bedroom-furniture-products'。因此,您必須指定您的要求,即確定您想要將哪個URI重定向到錯誤的URL? – anubhava

+0

是的,你是對的。我想要做的就是重定向這個:/ subdomain/z // - 產品到/子域 – Kevin

回答

1

我認爲anubhava是正確的,因爲您描述的樣本URL /subdomain/z//-products與您嘗試應用的RewriteRule之間存在不一致。不確定這是否是一個錯字。甚至可能是你的複製/粘貼操作實際上真正添加了「/ n」。

安美居,讓我們假設您想要讓規則正常工作與/subdomain/z//-products

RewriteRule ^/([^/]+)/z//\-products/?$ http://www.site.com/$1 [R=301] 

the example 1 slides of this PDF得到快速的第一部分。它比使用(.*)快得多。

我們字面上匹配z字符和周圍的斜線。我們轉義了-這個字符,然後我們完成URL的其餘部分,並可以選擇匹配尾部的斜槓。如果內存服務正確,我們使用「外部」風格重定向,以便機器人重新打開單獨的HTTP連接,追加匹配的反向引用,並切換狀態代碼。

讓我知道這是否有效。

+0

謝謝,我會試試這個。這是否導致規則出錯? – Kevin

+0

是的,我相信。我總是逃避可能會讓這種模式變得糟糕的角色。你實際上是在尋找URL中的「 - 」字符,但是由於你使用的是Apache的PCRE正則表達式解析器,「 - 」具有重要意義,因爲它可以按照字面搜索或用於指定範圍。例如:'[a-zA-Z]'指定一個全部小寫字母和全部大寫字母的字符類。我認爲把這個「 - 」放在一邊不會被打破。我個人使用名爲'Patterns'的Mac OS X應用程序來幫助我。它甚至會以您選擇的格式的編程語言吐出正則表達式。 – terryjbates

0

啓用mod_rewrite的,並通過httpd.conf的.htaccess,然後把這個代碼在你.htaccessDOCUMENT_ROOT目錄:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^subdomain/z/-products/?$ /$1 [L,R=302,NC] 

一旦你驗證它是否工作正常,更換R=302R=301。避免在測試mod_rewrite規則時使用R=301(永久重定向)。