mod_rewrite per-dir重定向返回400

时间:2010-12-29 20:51:36

标签: regex apache mod-rewrite redirect url-rewriting

我将图像目录移动到另一个文件夹,现在我想将该文件夹中的所有图像请求重定向到新文件夹。 我无法访问主配置文件,因此我在.htaccess中执行此操作。

我尝试了这个,它有效:

RewriteCond %{REQUEST_URI} old_dir/.+\.(jpg|png|gif)$

RewriteRule old_dir/(.+[^/]+\..+)$ $1 [L,PT]

但是因为他们已经永久移动了,我想做一个正确的重定向,所以我添加了[R]标志,如下所示:

RewriteCond %{REQUEST_URI} old_dir/.+\.(jpg|png|gif)$

RewriteRule old_dir/(.+[^/]+\..+)$ $1 [L,PT,R]

但服务器感到困惑,并返回400,所以我查看了日志文件,这就是:

strip per-dir prefix: C:/wamp/www/natrazyle/old_dir/images/banner.jpg -> old_dir/images/banner.jpg

applying pattern 'old_dir/(.+[^/]+\..+)$' to uri 'old_dir/images/banner.jpg'

rewrite 'old_dir/images/banner.jpg' -> 'images/banner.jpg'

add per-dir prefix: images/banner.jpg -> C:/wamp/www/natrazyle/images/banner.jpg

explicitly forcing redirect with http://localhost/C:/wamp/www/natrazyle/images/banner.jpg

如您所见,在localhost

之后添加了完整的本地路径

我知道我做错了什么,我自己也搞不清楚。 任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:0)

在替换中使用绝对网址路径:

RewriteRule ^old_dir/(.+\.(jpg|png|gif))$ /$1 [L,R]