2011-10-19 70 views
0

我想重定向一些舊文件/文件用於遵循這個模式文件夾:的.htaccess正則表達式,重定向到新的文件夾

FOLDERNAME/filename.extension

文件夾名稱有: (2010或2011 )(文本AZ AZ 0-9 _或 - )

文件名有: (文本AZ AZ 0-9 _或 - )擴展

例如:2011aug_SomeNameHere/image.jpg的

新的文件夾樹組織逐年文件(所以一切都是更深一層): 2010/FOLDERNAME/filename.extension 和 2011/FOLDERNAME/filename.extension

例如:2011/2011aug_SomeNameHere /圖像。 JPG

而且我有我的重寫規則如下:

<IfModule mod_rewrite.c> 

    RewriteEngine On 
    RewriteBase/

    RewriteRule ^http://(www\.)?domain.com/path/to/+(2010|2011)+([A-Za-z\_\-])+/([A-Za-z0-9\_\-]\.([A-Za-z]))$ http://domain.com/path/to/$1/$1$2/$3 [L,R=301] 

</IfModule> 

在Firefox中我得到重定向到: domain.com/path/to/2011aug_SomeNameHere/image.jpg/2011aug_SomeNameHere/image。 JPG/201 1aug_SomeNameHere/image.jpg的...

在Chrome中,我在得到一個404錯誤的URL: domain.com/path/to/2011aug_SomeNameHere/image.jpg

沒有人有任何想法/提示?

回答

1

試試這個:

RewriteRule ^path/to/(2010|2011)([A-Za-z\_\-]+)/([A-Za-z0-9\_\-]+\.[A-Za-z]+)$ /path/to/$1/$1$2/$3 [L,R=301] 

它使用不需要有域的重寫,除非你正在處理多個域的一個重寫。如果您使用www infront訪問您的域名,則您的第一個組爲1美元就是您的(www。)。我建議你看看你使用+和組來理解更多的正則表達式。讓你的+在組之外允許多次匹配同一組。在你的情況下,你想在一個組中匹配所有它。你也有一個嵌套組,用於你的文件擴展名匹配,它不需要它。

相關問題