nginx url index.php/page/Gallery.html 返回 404

nginx url index.php/page/Gallery.html 返回 404

抱歉,如果这是重复的,请给我链接。

这是我第一次设置 nginx。(它在 virtualmin 和 debian 下)

它可以很好地服务 php,例如 index.php

但 url index.php/page/Gallery.html 返回 404

我猜它无法解密请求字符串,但不知道该怎么办

我不相信那种形式,它使用重写(一旦我得到而无需工作,我就会设置它)

其 nginx/0.7.67 错误日志消息为:

2013/01/13 16:19:47 [错误] 5170#0:*123 open()“/public_html/index.php/page/Profile.html”失败(20:不是目录),客户端:ip,服务器:.com.au,请求:“GET /index.php/page/Profile.html HTTP/1.1”,主机:“.com.au”,引荐来源:“http://.com.au/

谢谢 !

编辑:添加配置:

server {
server_name ....com.au www.....com.au;
listen 118.8...;
root /home/.../public_html;
index index.html index.htm index.php;
access_log /var/log/virtualmin/....com.au_access_log;
error_log /var/log/virtualmin/....com.au_error_log;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_FILENAME /home/.../public_html$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /home/.../public_html;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass localhost:9000;
}

}

答案1

你可以简单地使用这个

尝试文件$uri $uri/ /index.php;

这样做的目的是尝试查找文件或目录,如果两者都未找到,则返回 index.php 文件。这样,您就可以使用domain.com.au/page/Gallery.html(假设没有同名文件)。然后,您只需使用 index.php 加载数据即可。然后,您还可以使用它来处理 404 错误,让用户看到一个与网站其他部分主题相同的漂亮页面。

但是,如果你必须以这种格式使用它,你可以将其更改为

位置 ~ \index.php/ {
    尝试文件$uri $uri/ /index.php;
    fastcgi_pass 本地主机:9000;
}
位置 ~ \.php$ {
    尝试文件$uri =404;
    fastcgi_pass 本地主机:9000;
}

这将保留一个 .php 文件的处理程序,同时当 url 包含 时还为您提供一个单独的处理程序index.php/

答案2

经过一些实验,我得到了提供的答案,当不使用 jaws cms 中的 index.php 时(启用重写)也可以工作

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass localhost:9000;
}
location ~ \index.php/ {
    try_files $uri $uri/ /index.php;
    fastcgi_pass localhost:9000;
}
location / {
  try_files $uri $uri/  /index.php/$uri;  
}

相关内容