我已将服务器从Apache切换到Nginx。
一切正常,除了最后一点。
在Apache中,我有以下规则:
RewriteRule ^event/(.*)$ /event.html [L]
RewriteRule ^/event/(.*)$ /event.html [L]
RewriteRule ^venue/(.*)$ /venue.html [L]
RewriteRule ^/venue/(.*)$ /venue.html [L]
RewriteRule ^calendar/day/(.*)$ /calendar/day.html [L]
RewriteRule ^/calendar/day/(.*)$ /calendar/day.html [L]
RewriteRule ^calendar/month/(.*)$ /calendar/month.html [L]
RewriteRule ^/calendar/month/(.*)$ /calendar/month.html [L]
但是在Nginx中无法正确处理它们。以下是实现:
location /event {
rewrite ^/event/(.*)$ /event.html break;
rewrite ^/event/(.*)$ /event.html break;
}
location /venue {
rewrite ^/venue/(.*)$ /venue.html break;
rewrite ^/venue/(.*)$ /venue.html break;
}
location /calendar {
rewrite ^/calendar/day/(.*)$ /calendar/day.html break;
rewrite ^/calendar/day/(.*)$ /calendar/day.html break;
rewrite ^/calendar/month/(.*)$ /calendar/month.html break;
rewrite ^/calendar/month/(.*)$ /calendar/month.html break;
}
但是访问上述内容后,我将重定向到主页。
有人可以帮我吗?
答案 0 :(得分:0)
由于已经通过location
进行了定义,因此好像斜杠后的路径是重复的。简单尝试一下:
location / {
rewrite ^/event/(.*)$ /event.html last;
rewrite ^/venue/(.*)$ /venue.html last;
rewrite ^/calendar/day/(.*)$ /calendar/day.html last;
rewrite ^/calendar/month/(.*)$ /calendar/month.html last;
}