我会尽量简短。我有以下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配置(和重写)文件:
答案 0 :(得分:0)
最简单的解决方案(假设服务器除了提供index.php
之外不执行任何其他操作)是删除通常的location ~ \.php$
块并在与{{相同的块中执行rewrite ... break;
1}}。有很多方法可以实现这一目标,包括:
fastcgi_pass
另一种策略是仅在本地文件尚不存在时执行重写,但您还需要确保location / {
rewrite ^/(.*)?$ /index.php?completeURL=$1 break;
fastcgi_pass ...
...
}
文件也经过测试。例如:
.php