问题标签 [ngx-http-rewrite-module]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
298 浏览

redirect - 使用 Nginx 的 Joomla SEF URL

迁移到最新的 Joomla 几乎是不可能的,因为在 5 年内已经编写了大量的自定义组件。

问题在于 URL。

尽管我们创建了链接到特定页面的菜单项,但它们仍然出现在索引中

例子:

普通链接,由菜单创建,这是唯一应该存在的链接:

但是,也可以通过以下 URL 访问此页面:

现在我正试图通过 301 重定向来避免它,但我知道这不是正确的做法。

如何解决这个问题呢?

0 投票
1 回答
1402 浏览

redirect - nginx 将查询字符串 $args 重写为 .html URL(不支持后端)

我有以下 nginx 重写规则。

我希望这就像:

至:

非常感谢您。

0 投票
3 回答
1899 浏览

nginx - Proxy_pass 忽略端口

我有一个运行 NGINX 的 CentOS 服务器,监听 80 和一个在 8080 上为应用程序服务的数据库。我希望能够键入

http://example.com/dev/abc

并让它实际访问

http://example.com:8080/apex/abchttp://localhost:8080/apex/abc

我已经使用了这个位置配置

但是,当我尝试时,显示的 url 是

http://example.com/apex/apex

该页面未找到,日志显示:

看起来有两件奇怪的事情正在发生

1) 尽管使用了 proxy_pass,但仍在使用端口 80 而不是 8080

2)为什么apex是两次“/apex/apex/”

请帮忙 :)

从配置文件中添加整个服务器块:

更新 - 有关可能有帮助的应用程序的更多信息

该应用程序是 Oracle Application Express (APEX),它在端口 8080 上进行侦听。URL 的工作方式如下:

其中[APP]、[Page]、[Session]都是对应的数字

开发环境 url 实际上是:

http://example.com:8080/apex/f?p=4550

这是默认设置,所以如果我尝试http://example.com:8080/apex/它默认为http://example.com:8080/apex/f?p=4550并带您进入登录页面

应用程序编号之后的所有内容都不会改变,所以我想用 /dev/ http://example.com:8080/apex/f?p=4550:1 -> http://example.com/dev/替换:1

一旦我了解了它的工作原理,我计划设置三个 proxy_pass

example.com/dev -> http://example.com:8080/apex/f?p=4550

example.com/desktop -> http://example.com:8080/apex/f?p=1001

example.com/mobile -> http://example.com:8080/apex/f?p=201

唯一改变的是应用程序编号。

重写对所有三个都很好,但我不希望重写在 URL 中可见

以下是重写:

0 投票
1 回答
60 浏览

nginx - NGINX 重写 url 不起作用

我有以下重写位置:

然后我尝试了这个:

那么这个:

那么这个:

所有这些都不起作用。

Nginx 版本 1.13.8

提前致谢

编辑 上面的所有代码都可以正常工作,我发现了我的错误。我将其中一个配置文件复制到 conf.d 文件夹以进行备份,但忘记将其重命名为扩展名。我删除了它,一切正常。谢谢大家的帮助!

0 投票
2 回答
20 浏览

php - 如何使用 nginx 重写模块重定向 nginx 中的子路径?

我有一组在我的应用程序中更改的 url 路径,例如:

  • /dataview/unknownvvvo/ => /backend/unknown-vvvo
  • /dataview/servicecounter => /backend/servicecounter-events

我尝试使用 nginx 中的重写规则来解决这个问题:

但是,例如,当我在浏览器中调用“http://localhost/dataview/unknownvvvo”时,nginx 错误日志告诉我重写成功,但它给了我一个 404 错误: nginx_err

根据 nginx 文档,这应该可以工作,那么我在这里错过了什么?