我想将其转换为 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;
}