.htaccess Url重定向问题

时间:2015-04-02 10:58:18

标签: apache .htaccess mod-rewrite redirect

我的域名中有两个已重命名的文件夹。我想在我的.htaccess文件中添加一些重定向脚本,以便使用旧链接的用户到达正确的位置。我尝试使用;

RedirectMatch 301 /oldfolder/subsection-01/(.*) example.com/new-folder/subsection/$1

RedirectMatch 301 /oldfolder/(.*) example.com/new-folder/$1

他们都工作了!但是我的所有图像链接都断了,因为它们在服务器上的文件路径有以下路径:

example.com/sites/default/files/**oldfolder**/filename.jpg

我一直在寻找一种方法来排除对.jpg文件的引用,或者确保只包含域文件夹的文件夹,例如'example.com/oldfolder'被采取行动但无济于事。

我尝试了以下技巧;

RedirectMatch 301 %{HTTP_HOST} example\.com/oldfolder/subsection-01/(.*)    example.com/new-folder/subsection/$1

RedirectMatch 301  example.com/oldfolder/(.*)  example.com/new-folder/$1

RewriteRule %{HTTP_HOST}.example\.com/oldfolder/subsection-01/$ example.com/new-folder/subsection/$1 [L]

RewriteRule %{HTTP_HOST} ^www\.example\.com/oldfolder/(.*) example.com/new-folder/$1 [R=301,L] 

但他们要么导致服务器501错误,要么根本不做任何事情。

我希望社区能提供任何有用的帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

在正则表达式中使用启动锚点,以确保您的模式仅在启动时匹配:

RedirectMatch 301 ^/oldfolder/subsection-01/(.*) http://example.com/new-folder/subsection/$1

RedirectMatch 301 ^/oldfolder/(.*) http://example.com/new-folder/$1