4

有人可以发光吗?这就是问题所在:我需要在运行 Nginx 的服务器上创建一个站点。我对这台服务器没有经验,所以我一直在关注它。我想省略 index.php,这样

http://www.mydomain.com/index.php/welcome/index

变成

http://www.mydomain.com/welcome/index

然后我想提取 /welcome/index 以便我可以在 MVC 应用程序中开始并使用它。我一直在环顾四周,但我迷失在那些可能在做自己的配置的人的俱乐部中。

我的问题是我是否可以作为客户端影响服务器响应,就像通过 htaccess 文件使用 Apache 完成的那样,或者我是否需要让托管服务器的提供商参与进来?我已请求为此更改服务器,但我得到的支持不是很有帮助。

我能够在 nginx.conf 文件中模拟所需的服务器响应。这告诉我这是可以做到的。对于那些感兴趣的人。通过 $_SERVER['REQUEST_URI'] 读取 url 上的值。

worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   html;
            index  index.php index.html index.htm;


           try_files $uri $uri/ /index.php;

        }

                include mime.types;


        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }


    }

}
4

1 回答 1

4

我这样做:

location / {
    try_files $uri $uri/ /index.php?uri=$uri&$args;
}

然后你$_GET['uri']从你的index.php. 你应该看看 nginx 的try_files文档。

或者,如果您想通过以下方式访问它$_SERVER['REQUEST_URI']

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

编辑:

仅查看您的服务器配置的几件事:

  • 您已经在块中包含了 mime.types http,因此无需在server块中再次包含它们

  • root html;移动到index index.php...你的server街区可能是个好主意

  • 一定要通读这些示例配置(评论中解释的所有内容),这是开始掌握 nginx conf 的好方法

  • Nginx 网站有一些非常好的资源

于 2012-11-05T07:04:45.587 回答