php - 将规则从 Apache 转换为 Nginx
问题描述
我已将服务器从 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;
}
但是当访问上述内容时,我会被重定向到主页。
有人能帮助我吗?
解决方案
由于已经通过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;
}