mod_rewrite重映射文件夹

时间:2013-09-25 06:58:57

标签: apache .htaccess mod-rewrite

我目前更新了我们的网站,图片文件夹名称已从/img/更改为/images/

我仍在从我的apache错误日志中获取404错误,试图访问旧/img文件夹。

我正在尝试编写mod_rewrite规则来重定向任何访问/img/的尝试以引用/images/

这是我到目前为止所得到的:

RewriteRule ^img/?(.*)$ images/$1 [R=301,L]

然而,每当我访问http://mysite.com/img时,我仍然会得到我的404页面(而不是我访问/图像时应该收到的禁止页面)。

这是对的吗?如果重要的话,我确实有另一条强制使用ssl的规则。

非常感谢

1 个答案:

答案 0 :(得分:3)

此规则应放在根文件夹中:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/images/$1 -d [OR]
RewriteCond %{DOCUMENT_ROOT}/images/$1 -f
RewriteRule ^img/(.*) /images/$1 [R=302,NC,L]

此规则将仅重定向http://domain.com/images上存在的现有文件或文件夹。

请注意,自从您使用R=301以来,您可能已经过以前的尝试缓存,因此要确保其工作尝试使用其他浏览器。

请注意,我使用R=302来避免此缓存,一旦您确认它正在运行,请将其更改为R=301