我在nginx服务器的子文件夹中设置了codeigniter。
我在nginx中安装了多个codeigniter,例如:
www.example.com/test
www.example.com/test1
我在测试目录sitemap中有一个文件夹。当我访问www.example.com/test/sitemap/sitemap.xml.gz
时,它给我404错误。
我的nginx文件是
server {
listen 80;
listen[::]: 80;
root / usr / share / nginx / html;
index index.php index.html index.htm;
server_name www.example.com;
access_log /
var / log / nginx / access.log;
error_log /
var / log / nginx / error.log error;
location / {
try_files $uri $uri / = 404;
}
location / test {
root / usr / share / nginx / html / test;
index index.html index.htm index.php;
try_files $uri $uri / /test/index.php;
location~ * ^ /(assets|files|robots\.txt) { }
}
location / test2 {
root / usr / share / nginx / html / test2;
index index.html index.htm index.php;
try_files $uri $uri / /test2/index.php;
}
error_page 404 / 404. html;
error_page 500 502 503 504 / 50 x.html;
location = /50x.html {
root / usr / share / nginx / html;
}
location~ * \.(ico | css | js | gif | jpe ? g | png | svg | woff2 | woff | ttf) $ {
expires max;
add_header Pragma public;
add_header Cache - Control "public, must-revalidate, proxy-revalidate";
}
location~ * ^ /(assets|files|robots\.txt) { }
location~/\.ht {
deny all;
}
location~\.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^ (. + \.php)(/.+)$;
fastcgi_pass unix: /var/run / php5 - fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include fastcgi_params;
}
}
答案 0 :(得分:0)
您的每位置root
指令可能不必要且不正确。
文档根目录通常是从周围的server
块继承的,只有在location
块中为该上下文发生更改时才需要指定。
如果您的URI /test/index.php
位于/usr/share/nginx/html/test/index.php
,那么root
的正确值为/usr/share/nginx/html
,无论它是否出现在server
块中或location
阻止。
您当前正在指定路径,例如:/usr/share/nginx/html/test/test/index.php
和/usr/share/nginx/html/test/test/sitemap/sitemap.xml.gz
。
您应该从root
块中删除location
个句子,因为上面已经在server
块中指定了正确的值。
有关详细信息,请参阅this document。