如何将 htaccess 转换为 nginx

问题描述

我在将 htaccess 文件转换Nginx 时遇到问题。也许有人可以帮助我。

我需要转换以下代码

Options +FollowSymLinks -MultiViews
RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index\.PHP/$1 [L,QSA]

我试过了,但这根本不起作用:

    location / {
    try_files $uri $uri/ /index.PHP?$args;
}

解决方法

RewriteRule ^(.*)$ index\.php/$1 [L,QSA]
location / {
    try_files $uri $uri/ /index.php?$args;
}

(我假设您的 .htaccess 文件位于文档根目录中。)

您的 Apache RewriteRule 指令将 URL 路径作为路径信息传递给 index.php 脚本,因此您的 Nginx 指令应该类似于以下内容:

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

$uri 已经包含斜线前缀。默认情况下,Apache 也会传递查询字符串,但在 Nginx 中,您需要附加 $is_args$args。 (当 $is_args(查询字符串)非空时,? 只包含 $args。)

,

我发现这有效:

if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?$1;

}

但是安全吗?