我有以下结构中的文件
index.php
help.php
help\helpone.php
help\helptwo.php
如果我访问something.com,我会被带到正确的索引页面,并从最后删除.php。当我转到something.com/help时,nginx会抛出403.这是因为同一目录中有一个帮助文件夹。要求是访问something.com/help以查看帮助页面
帮助页面包含指向其他页面的链接,因此单击它会成为某个问题/ help / help
我有以下服务器块来执行操作。
server {
root /usr/share/nginx/landing;
server_name sample.com;
index index.php index.html;
location / {
try_files $uri/ $uri.php$is_args$query_string;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
}
}
如何在不获取403
的情况下获取sample.com/help答案 0 :(得分:1)
那是因为首先尝试帮助/目录,而不是help.php文件。里面没有index.php,因此显示403错误。
尝试:
location / {
try_files $uri.php$is_args$query_string $uri/;
}
或者更改help.php文件或目录的名称。
答案 1 :(得分:0)
因此,此问题的解决方案是将根目录中的help.php
移动到help\index.php
这样,Nginx将直接在文件夹help
中查找index.php而不是冲突在外面的help.php
和执行禁止访问的文件夹help
之间。
现在转到sample.com/help
会直接进入sample.com/help/index.php
,而不会向您展示index.php
当然。
附加nginx块以供参考,但没有太大变化。
index index.php index.html;
location / {
try_files $uri/ $uri.php;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php;
}
文件夹结构
index.php
help\index.php
help\help1.php
help\help2.php
输出
sample.com
转到sample.com/index.php
&没有显示/index.php
所以UX也很满意!