【问题标题】:nginx rewrite not end with .php extensionnginx 重写不以 .php 扩展名结尾
【发布时间】:2015-11-15 02:09:14
【问题描述】:

我正在使用 nginx 将 URL 像
http://www.sample.com/application 重写为 http://www.sample.com/index.php/application

重写规则是

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

我的 fastcgi 配置是

location ~ \index.php {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

但是重写规则不起作用。
我浏览 http://www.sample.com/index.php/application 也不起作用。
/application 没有传递给 index.php

这有什么问题?

【问题讨论】:

    标签: php .htaccess nginx url-rewriting


    【解决方案1】:

    如果您从rewrite 规则中break,则位置上下文保持不变。您需要使用 last 而不是 break 以便最终找到您的 fastcgi 位置。

    此外,您的正则表达式规则中有一个多余的反斜杠。应该是:

    location ~ ^/index.php { ... } 
    

    【讨论】:

    • 对不起,它不起作用。没有将 /application arg 传递给 index.php。
    • @Magic 我已经测试过了,它确实有效。您的index.php 如何接收参数取决于您在fastcgi_params 中输入的内容。无论如何,它将接收/application 作为 REQUEST_URI 的一部分,但是如果您想添加 PATH_INFO 参数,您可能需要添加自己的fastcgi_param 请参阅nginx.com/resources/wiki/start/topics/examples/phpfcgi
    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2011-10-11
    • 2021-08-27
    相关资源
    最近更新 更多