从 apache 切换到 nginx - mod_rewrite 问题

从 apache 切换到 nginx - mod_rewrite 问题

我刚刚将我的服务器从 apache2 切换到 nginx,现在我的 .htaccess 重写遇到了一些问题。

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

我了解到,为了使此功能在 Nginx 上工作,我需要编辑 Nginx 服务器块。有人能告诉我怎么做吗?提前谢谢您。

答案1

你可以使用 try_files 做类似的事情:

location (.*) {
  try_files $uri $uri/ /index.php;
}

否则你可以使用 .htaccess 到 nginx 转换器http://winginx.com/en/htaccess,但由于这是一个自动化过程,因此不会进行优化:

location / {
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}

相关内容