首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将根地址重写到nginx中的子目录

将根地址重写到nginx中的子目录
EN

Stack Overflow用户
提问于 2013-07-19 12:26:37
回答 6查看 84.3K关注 0票数 36

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

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

代码语言:javascript
复制
RewriteRule ^$ /wiki/Main_Page [L]

我在nginx中尝试了类似的location指令,但它不起作用:

代码语言:javascript
复制
location = / {
    rewrite "^$" /wiki/Main_Page;
}

我的其余位置指令是:

代码语言:javascript
复制
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;
}

我可以简单地将一个带有头文件(‘Location:’)的index.php文件放入其中,但我宁愿只使用重写规则来正确地做这件事。

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

编辑:我还尝试像这样添加到try_files:try_files $uri $uri/ @rewrite /wiki/Main_Page;,但出现了相同的403错误结果。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-19 13:26:04

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

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

代码语言:javascript
复制
location = / {
    rewrite "^$" /wiki/Main_Page;
}

要这样做:

代码语言:javascript
复制
location = / {
    return 301 http://www.example.com/wiki/Main_Page;
}
票数 43
EN

Stack Overflow用户

发布于 2016-12-28 01:03:46

我更喜欢使用:

代码语言:javascript
复制
location = / {
    return 301 http://$host/wiki/Main_Page;
}
票数 33
EN

Stack Overflow用户

发布于 2013-07-19 20:12:44

您使用的答案是重定向,使您跳过/位置到/wiki位置,您可以尝试此操作

代码语言:javascript
复制
location = / {
    rewrite ^ /w/index.php?title=Main_Page&$args last;
}

这应该为/ URI的Main_Page提供服务器

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17738088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档