如何设置 nginx 扩展通配符

如何设置 nginx 扩展通配符

我想隐藏我的扩展名,例如 .php

但这不仅仅是隐藏,如果我输入index.do nginx重写为index.php但是,url地址必须相同(index.do)

总而言之,我特别想要的是

example.com/index.jsp,
example.com/index.html,
example.com/index.asp,
example.com/index.js,
example.com/index.do,
example.com/indexanystring[]~?&/^,
example.com/index

必须全部重写为index.php。此外,地址必须保持不变。

如果输入“example.com/indexanystring”,url 应该是“example.com/indexanystring”,并且 index.php 应该可见

我见过的一个网站似乎使用 nginx 来实现该功能。我认为从安全角度来看它很好,所以我打算尝试一下。

以下是我尝试过的 nginx 配置

...
        location / {
                    try_files $uri $uri/ @rewrite;
        }
    
        location @rewrite {
                    rewrite ^ $uri.php last;
        }
    
        location ~ /roulette/index(.*)$  {
                    rewrite ^ $uri/index.php;
        }
    
        location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    #fastcgi_pass 127.0.0.1:9000;
                    fastcgi_pass unix:/run/php/php5.6-fpm.sock;
                    include fastcgi_params;
        }
...

但它没有按我想要的方式工作

答案1

我自己解决了。

这是我的设置

rewrite ^/index.* /index.php break;

但我不知道它是否安全。

相关内容