转换 htaccess 重写规则

转换 htaccess 重写规则

我想将其转换为 nginx 规则

# BEGIN EAP Rewrite
<IfModule mod_rewrite.c>
RewriteEngine on
Options -Multiviews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)?$ index.php?a=$1  [QSA,NC,L]
ErrorDocument 404 /new/404.php
</IfModule>
# END EAP Rewrite

我尝试过几次,但都没有成功。

error_page 404 /new/404.php;
    location / {
        #try_files $uri $uri/ /index.php?$args;
        try_files $uri $uri/ /index.php?a=$args; 
        #rewrite  ^/(.*)?$  /index.php?a=$1 last;
    }

实际上,下面这一行对于 URL 有效,但真正的文件夹路径(如 css 和 js)却不起作用。

#rewrite  ^/(.*)?$  /index.php?a=$1 last;

有人吗?提前致谢。

答案1

try_files $uri $uri/指令检查文件系统上是否存在文件/目录,如果存在则为其提供服务。

如果您不想直接提供任何文件,您应该尝试设置对不存在的路径的引用,这样就try_files找不到任何文件,然后使用如下方法:

location / {
    root /path/of/empty/directory;
    try_files $uri $uri/ /index.php?a=$args;
}

相关内容