【问题标题】:Translating Rules from Apache to Nginx将规则从 Apache 转换为 Nginx
【发布时间】:2019-03-10 00:00:27
【问题描述】:

我已将服务器从 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;
}

但是当访问上述内容时,我会被重定向到主页。

有人可以帮帮我吗?

【问题讨论】:

    标签: php html apache nginx web


    【解决方案1】:

    由于已经通过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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2016-06-18
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多