2009-04-09 35 views
2

有指向一個網站,我管理,其中站長誤包括域名和頁面名稱之間的空間幾個環節:mod_rewrite的不爲%開頭的URL(百分號)工作

 
    www.domain.com/ page.html 

當用戶點擊,這給

 
    www.domain.com/%20page.html 

我想使用mod_rewrite來命中重定向到不正確的地址到正確的地址,但我重寫規則不工作。我曾嘗試沒有成功如下:

 
    rewriterule ^\%20page.html$ /page.html [R=301,L] 
    rewriterule ^.20page.html$ /page.html [R=301,L] 

我如何寫一個規則來抓住這個地址嗎?我想保持PageRank,不會因爲斷開的鏈接而受到懲罰,而且我無法讓網站管理員修復其鏈接。

+0

您有網站管理員不能修復損壞的鏈接嗎?這似乎是一個非常糟糕的情況。 – acrosman 2009-04-09 15:13:41

+0

如果鏈接被破壞,我懷疑你有一個PageRank,所以修復鏈接。如果您的網站管理員無法解決問題,那是一個主要問題。這是他的工作,也是他不可原諒的,他以這種方式寫在第一位... – rmeador 2009-04-09 15:21:10

回答

2

把空間放在你的RewriteRule中。可能在mod_rewrite看到它的時候,它已經被解碼了。

7

使用文字空間,用反斜槓轉義,因此並沒有結束的正則表達式:

RewriteRule ^\ page.html$ /page.html [R=301,L] 
0

你可以使用這樣的事情,除去所有的控制字符:

RewriteRule ^([^\x00-\x19\x7F]*)[\x00-\x19\x7F]+(.*) /$1$2 [L,R=301] 

而且爲您的額外空間字符:

RewriteRule ^([^\x00-\x20\x7F]*)[\x00-\x20\x7F]+(.*) /$1$2 [L,R=301]