【发布时间】:2016-03-07 08:09:43
【问题描述】:
我正在尝试实现两种方案。
场景 A:如果客户端请求的 URL 包含 .jpeg 或 .jpg 文件,则将用户重定向到服务器上的单个 .jpg 文件,在这种情况下为 myimage.jpg
场景 B : 如果客户端请求的 URL 包含 /abc/ 目录,通过代理将用户重定向到其他域,同时保持 URL 完整。
下面是我的nginx.conf的内容
http {
server {
listen 80;
root /usr/share/nginx/html;
#Scenario A
location ~* \.(jpg|jpeg){
rewrite ^$ /myimage.jpg break;
}
#Scenario B
location ^~ /abc/ {
proxy_pass http://cd.mycontent.com.my;
proxy_redirect localhost http://cd.mycontent.com.my;
proxy_set_header Host $host;
}
}
......
我提到的大部分都是Nginx redirect to a single file 配置在 /var/log/nginx/error.log 中不包含错误,但它没有按预期执行。
方案 A 的更新:
我已经添加了根指令,但它仍然没有重写 URL。我设法在 Apache 中实现了这一点,但在 Nginx 中却没有。在 Apache 中,我只创建内容如下的 htaccess 文件:
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>
使用这个 htaccess,我可以用 .jpeg|.jpg 重写任何 URL 请求,并且用户将看到 myimage.jpg 的图像,而不是他们使用 URL 请求的任何 jpeg|jpg 图像。我已经尝试使用 htaccess 到 nginx 转换器 here 但它不起作用。
【问题讨论】: