NGINX 删除 index.php /index.php/something/more/ 到 /something/more

NGINX 删除 index.php /index.php/something/more/ 到 /something/more

我正在尝试使用框架 DooPHP 清理 NGINX 中的 URL。

这 => -http://example.com/index.php/something/more/ 至此 => -http://example.com/something/more/

如果有人尝试进入第一个表单,我想从 URL 中删除(清理 URL)“index.php”。就像永久重定向一样。

如何在 NGINX 上进行此配置?

谢谢。

[更新:实际的 nginx 配置]

server {
  listen 80;
  server_name vip.example.com;
  rewrite ^/(.*) https://vip.example.com/$1 permanent;
}

server {
       listen 443;
       server_name vip.example.com;

       error_page 404 /vip.example.com/404.html;
       error_page 403 /vip.example.com/403.html;
       error_page 401 /vip.example.com/401.html;
       location /vip.example.com {
           root /sites/errors;
       }

       ssl on;
       ssl_certificate /etc/nginx/config/server.csr;
       ssl_certificate_key /etc/nginx/config/server.sky;

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

       location / {
           auth_basic  "example Team Access";
           auth_basic_user_file  config/htpasswd;
           root   /sites/vip.example.com;
           index  index.php;
       }

       location ~ \.php$ {
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /sites/vip.example.com$fastcgi_script_name;
           include        fastcgi_params;
           fastcgi_param PATH_INFO $fastcgi_script_name;
      }

}

答案1

这是我所寻找的线路,我自己做的。可能有一些错误。

你怎么认为?

server {

 ....

  rewrite ^/index.php/(.*) /$1  permanent;

 ....

}

答案2

我在 CodeIgniter 1.7 和 2.0 上尝试过,并且我改变了

配置.php$config['uri_protocol'] = "REQUEST_URI";

我补充一下try_files $uri $uri/ /index.php?r=$request_uri;

在 nginx.conf 上,并且工作正常

location / {
       auth_basic  "example Team Access";
       auth_basic_user_file  config/htpasswd;
       root   /sites/vip.example.com;
       index  index.php;
       try_files $uri $uri/ /index.php?r=$request_uri;
   }

也许在 DooPHP 上也是一样

答案3

将其添加到 nginx 服务器配置部分。

location / {
                if (!-e $request_filename) {
                        rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1&$2 last;
                }
                if ($uri ~* "\.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$") {
                        expires max;
                        break;
                }
        }

答案4

将此位置对象添加到 nginx.conf 中的服务器配置中。如果location /已存在,则只需添加此try_files行。

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

相关内容