<pec><a href="#" onClick="ampliar();"><img src="001.jpg" width="400" height="250" /></a></pec>
<gran id="granderizable" ><a href="#" onClick="ampliar();"><img src="001ZOOM.jpg" width="1280" height="800" /></a></gran>
当我发出请求http{
server {
listen 80;
server_name example.com;
rewrite_log on;
root /etc/nginx/html/mysite;
location ^~ /me/ {
rewrite ^/me/(.*)$ /etc/nginx/html/mysite/$1.html;
}
}
}
我希望http://example.com/me/all
但请求转到/etc/nginx/html/mysite/all.html
忽略重写,而没有关于日志中的重写错误(仅找不到404)。
答案 0 :(得分:0)
您要将虚拟主机的root
指定为/etc/nginx/html/mysite
(第6行)。在重写规则中,您再次指定整个路径/etc/nginx/html/mysite/$1.html
(第8行)。 nginx所做的是将重写规则(/etc/nginx/html/mysite/$1.html
)的目标附加到虚拟主机的根目录(/etc/nginx/html/mysite
)。在您的示例中,这会导致搜索文件:
/etc/nginx/html/mysite/etc/nginx/html/mysite/all.html
此类文件不存在并导致404。
更正规则以使目标成为root
的相对路径,如下:
http{
server {
listen 80;
server_name example.com;
rewrite_log on;
root /etc/nginx/html/mysite;
location ^~ /me/ {
rewrite ^/me/(.*)$ /$1.html;
}
}
}
请记住,您可以通过阅读nginx错误日志(默认位置为/var/log/nginx/error.log
)来获取有关这些错误的更多信息。在你的情况下,它会说明如下:
&#34; /usr/share/nginx/html/mysite/usr/share/nginx/html/mysite/all.html"失败(2:没有这样的文件或目录),客户端:127.0.0.1,服务器:localhost,请求:&#34; GET / me /所有HTTP / 1.1&#34;,主机:&#34; localhost&#34;