2010-04-12 80 views
0

的文件我正在處理的情況是,有人在服務器上傳遞了一堆舊的文件,這些文件已經有很多直接傳入的鏈接(通常是pdf文件)。我現在已經組織了文件,但在不同的目錄中。現在它是'域名/手冊/文件'之前是'域名/媒體/手動/文件'。我正在嘗試使用htaccess文件解決此問題。如何使用htaccess重定向目錄,其中包含名稱空間爲

許多文件在名稱中都有空格(不是我可以控制的東西),並且因爲它們已經有鏈接,所以我不能僅僅通過重命名它們。我發現,我可以單獨重定向文件時,他們通過使用引號,如在名字空間:

redirect 301 "/manuals/file 123.pdf" "http://www.domain.com/manuals/file 123.pdf" 

不過,也有這些文件的負荷,我想知道是否有是創建一個正則表達式的方式它將處理可用於重定向整個目錄的文件名中的空格。我應該補充說,一些文件包含體面的文件名,沒有空格,有些文件有一個空格,其他空格不止一個。這並不漂亮。

如果您在聽到您的建議之前就已經遇到了這個問題,那麼我的想法就會消失。

謝謝。

回答

1

什麼:

RedirectMatch permanent ^/manuals/(.*)$ http://www.domain.com/media/manual/$1 

(.*)匹配下面的URL /manuals/任何字符。

注意RedirectRedirectMatchmod_alias一部分,而不是mod_rewrite(因爲這個問題被標記),所以請原諒早期mod_rewrite規則我張貼。

+0

感謝您的幫助球員。 @安迪,非常感謝。我是否認爲如果我在RedirectMatch聲明之後對單個文件使用標準301重定向,那麼我還可以將URL重定向到我有不同文件名的文件? 謝謝。 – James 2010-04-12 14:02:10

+0

我會說,首先重定向文件名的變化,並從'/ manuals/old file.pdf'轉到'/ media/manuals/new file.pdf',否則客戶端最終會做2次重定向(一次改變目錄和一個用來更改文件名。) – 2010-04-12 14:10:08

+0

我在RedirectMatch語句前爲目錄放置了單個文件的重定向,那是您的意思嗎? 感謝您的幫助。 – James 2010-04-12 14:42:21

0

如果您需要URL中空格的字符,則可以使用%20這是空格的URL編碼。

0

重定向可以一次處理整個目錄。

Redirect permanent /manuals/ http://www.domain.com/manuals/ 

那麼你不必擔心逃離空間%20,或任何其他字符。 Apache會將該路徑下的每個文件重定向到目標URL下的同一文件。

RedirectMatch存在以及對正則表達式匹配,你不需要求助於對於這個雖然)。

+0

感謝bobince工作 – James 2010-04-12 15:14:29

相關問題