gpt4 book ai didi

nginx - 将根地址重写为nginx中的子目录

转载 作者:行者123 更新时间:2023-12-03 09:44:47 25 4
gpt4 key购买 nike

我正在将我的 mediawiki 站点转换为使用 nginx 作为静态文件的前端,后端为 php。到目前为止,我已经让一切正常工作,除了当我查看根目录“example.com”时,它会尝试提供目录列表并给出 403 错误,因为我禁用了它并且那里没有索引文件。

我现在的 apache 重写规则很简单:

RewriteRule ^$ /wiki/Main_Page [L]

我尝试了与 nginx 中的位置指令类似的东西,但它不起作用:
location = / {
rewrite "^$" /wiki/Main_Page;
}

我的其余位置指令是:
location / {
try_files $uri $uri/ @rewrite;
}

location @rewrite {
rewrite ^/wiki/(.*)$ /w/index.php?title=$1&$args;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /w/index.php?title=$1&$args;
expires max;
log_not_found off;
}

location ~ \.php?$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}

我可以简单地将一个带有 header('Location:') 的 index.php 文件放入其中,但我宁愿使用重写规则正确地完成它。

我在网上找到的所有使用 nginx 运行 mediawiki 的示例都将 wiki 作为 wiki.example.com 而不是/wiki/子目录运行。

编辑:我也尝试像这样添加到 try_files: try_files $uri $uri/ @rewrite /wiki/Main_Page;具有相同的 403 错误结果。

最佳答案

我在 nginx irc 聊天中找到了帮助。

基本上我需要做的是使用返回而不是重写。所以我改变了这个:

location = / {
rewrite "^$" /wiki/Main_Page;
}

对此:
location = / {
return 301 http://www.example.com/wiki/Main_Page;
}

关于nginx - 将根地址重写为nginx中的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com