有两种情况我试图实现。
方案A:如果客户端请求包含.jpeg或.jpg文件的URL,请将用户重定向到服务器上的单个.jpg文件,在本例中为myimage.jpg
方案B:如果客户端请求包含/ abc /目录的URL,则通过代理将用户重定向到其他域,同时保持URL的正常运行。
以下是我的nginx.conf
的内容Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
#Check URL if contain .jpeg or .jpg
RewriteCond %{REQUEST_URI} (\.jpeg|\.jpg)$
RewriteRule (.*) myimage.jpg [QSA]
</IfModule>
我提到的大多数Nginx redirect to a single file配置在/var/log/nginx/error.log中不包含错误,但它没有按预期执行。
方案A的更新:
我已经添加了root指令但它仍然没有重写URL。我设法在Apache中实现了这一点,但在Nginx中却没有。在Apache中,我只创建包含如下内容的htaccess文件:
{{1}}
使用这个htaccess,我可以用.jpeg | .jpg重写任何URL请求,用户将显示myimage.jpg的图像,而不是他们用URL请求的jpeg | jpg图像。我尝试过将htaccess用于nginx转换器here,但它无效。
答案 0 :(得分:0)
您的配置存在一些问题。您似乎没有定义root
指令,重写将循环。此外,不确定使用last
修饰符的绝对重定向。
root /path/to/document/root;
location ~* \.(jpg|jpeg) {
rewrite ^ /myimage.jpg break;
}
请注意,正则表达式将URI与嵌入的.jpg
字符串匹配。如果您只想匹配以.jpg
结尾的URI,请附加$
。
break
将通过处理同一位置块中的URI来阻止重定向循环。
有关详细信息,请参阅this document。