我正在努力使用nginx配置。我有一个server
块我想要所有请求去index.php?tags=$uri
,除非$uri
存在(像index.php?a=b
或/?a=b
)。
我希望:
try_files $uri index.php?tags=$uri;
但是,不,那太简单了。这不起作用/?a=b
,显然没有找到,所以它指向index.php?tags=/
也许如果我明确包含一个index
,这是合理的:
index index.php;
不。没有骰子。完全相同的结果。
也没什么用$args
,$request_uri
或组合。也不是它:
try_files $request_uri/index.php $request_uri index.php?tags=$request_uri; // now I'm just guessing
Apache总是知道我的意思。为什么不nginx?我想要这些重定向(没有redirect
或if
):
/ => /index.php
/index.php => /index.php
/index.php?a=b => /index.php?a=b
/?a=b => /index.php?a=b
/foo => /index.php?tags=foo (or /index.php?tags=/foo)
/foo/bar => /index.php?tags=foo/bar (or /index.php?tags=/foo/bar)
/foo?bar=yes => /index.php?tags=/foo%3Fbar%3Dyes
我希望在重定向时对查询字符串进行编码,但不是路径,但实际上并不是那么重要。
(我也不明白$ uri和$ request_uri之间的实际区别。他们似乎在同一半时间做同样的事情。但那是另一天。)
非常感谢。
location = /
做了。为什么你不能把它结合在location /
块内?这=
意味着它只与精确的uri相匹配吗?非常感谢。他们说nginx很容易。