nginx重写&参数full-url和文件扩展名

时间:2016-04-26 16:18:12

标签: nginx

我会尽量简短。我有以下nginx重写网址:

rewrite ^/(.*)?$ /index.php?completeURL=$1 last;

我想要一个网址:

http://mywebsite.com/http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1

请求:

http://mywebsite.com/index.php?completeURL=http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1

目前nginx规则存在问题。 示例:如果参数包含.php扩展名,则他会在我的服务器上查找该文件。

示例:http://mywebsite.com/dir1/dirx/article.php

您认为我如何解决这个问题?

更新 这里是nginx配置(和重写)文件:

1 个答案:

答案 0 :(得分:0)

最简单的解决方案(假设服务器除了提供index.php之外不执行任何其他操作)是删除通常的location ~ \.php$块并在与{{相同的块中执行rewrite ... break; 1}}。有很多方法可以实现这一目标,包括:

fastcgi_pass

另一种策略是仅在本地文件尚不存在时执行重写,但您还需要确保location / { rewrite ^/(.*)?$ /index.php?completeURL=$1 break; fastcgi_pass ... ... } 文件也经过测试。例如:

.php