将Apache重写规则转换为nginx配置文件

时间:2012-08-30 22:36:15

标签: apache .htaccess nginx rewrite

我有一个非常简单的.htaccess文件,我需要将其转换为nginx配置:

RewriteRule ^api$ api.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

我试着开始做:

location / {
    rewrite ^(.*)$ /index.php;
}

但每当我加载网页的基本URL时,我的浏览器就会下载index.php文件。我的配置中也有这个:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

但由于某些原因,nginx仍然将其作为下载传递。这里的配置是什么?

1 个答案:

答案 0 :(得分:1)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

使用try_files进行的前3次操作不是nginx中的重写(有关该指令的详细信息,请参阅http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files):

location / {
  try_files $uri $uri/ $uri/index.php$args;
}

location = /api {
  rewrite ^ /api.php$args
}