简体   繁体   English

将规则从 Apache 翻译成 Nginx

[英]Translating Rules from Apache to Nginx

I have switched server from Apache to Nginx.我已将服务器从 Apache 切换到 Nginx。

Everything works, except for the last bit.一切正常,除了最后一点。

In Apache I have the following rules:在 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]

But can't get them right in Nginx.但无法在 Nginx 中正确使用它们。 The following is the implementation:下面是实现:

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;
}

But I get redirected to the Home Page when the above are accessed.但是当访问上述内容时,我被重定向到主页。

Can someone help me please?有人能帮助我吗?

Seems like the path after the slash is duplicated due to already been defined via location .由于已经通过location定义,似乎斜线后的路径被复制。 Try simply this:试试这个:

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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM