2013-04-29 48 views
1

我需要重定向 “example.com/image/img.jpg” 到 “example.com/view/img.jpg”使用的.htaccess

所以我用

RewriteRule (^|.*?/)image/(.*)$ /$1view/$2 [R=302,L,NC] 
重定向为.jpg

但是,如果我尝试访问“example.com/image/img.jpg”,它将不会重定向。我究竟做错了什么?

谢谢。

+0

尝试在RewriteRule前的'.htaccess'中添加'RewriteEngine On',它可以帮助 – petrch 2013-04-29 17:45:05

+0

我在'.htaccess'开头已经有'RewriteEngine On'。我需要添加两次吗?我的意思是在'RewriteRule'之前呢? – Grainier 2013-04-29 17:52:43

+1

一次就够了。我测试了我的网络服务器上的规则,它工作。 Web服务器处理'.htaccess'文件吗?检查服务器配置中的AllowOverride指令,或在.htaccess中产生语法错误,并查看它是否导致错误500. – petrch 2013-04-29 18:17:13

回答

1

我需要重定向“example.com/image/img.jpg”到“example.com/view/img.jpg”

显然,上述例子并不准确,因为你的规则表示:目录imageview可以在相应的URL目录结构中的任何级别。

如果是那样的话,你可以在一个.htaccess文件的根目录试试这个:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} ^/(.*)?image/([^.]+)\.jpg [NC] 
RewriteRule .*    /%1view/%2.jpg  [R,L,NC] 

如果imageview目录确实是在第一级作为例子说明,取代过去的2线与这一个:

RewriteRule ^image/(.*) /view/$1 [R,L,NC] 

替换[R,L,NC]与[R = 301,L,NC]永久重定向或与[L,NC]用于内部映射。