我需要删除.php和.html扩展名和 URL 中的尾部斜杠,而不会影响对现有目录的访问。
我当前正在使用以下 nginx 配置:
rewrite ^/(.*)/$ /$1 permanent;
index index.php index.html;
location ~ / {
rewrite ^/([0-9]+)/([^/]+)$ /event.php?id=$1&title=$2 last;
try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}
location ~ \.php$ {
try_files $uri =404;
}
它可以工作,但我无法访问现有文件夹(这是预期行为,因为以斜线结尾会产生无限重定向)。我尝试用以下方法修复它,try_files
但没有奏效:
location / {
try_files $uri $uri/ @notexists;
}
location @notexists {
rewrite ^/(.*)/$ /$1 permanent;
rewrite ^/([0-9]+)/([^/]+)$ /event.php?id=$1&title=$2 last;
try_files $uri $uri/ $uri.html $uri.php$is_args$query_string;
}
顺便说一句,我想知道如何优化代码以提高效率。我是 Nginx 新手...