我想将包含'xhr.php'的所有请求重写为/xhr.php而不是原始路径。
请求:
type: "POST",
url: "/system/classes/templates/address/xhr.getAddress.php",
data: vars,
dataType: "html"
应该以路径作为参数转到 /xhr.php 。我试过这个:
rewrite ^/(.*)/xhr.(.*)\.php$ /xhr.php?parameter=$1¶meter2=$2 last;
然而它不起作用。有任何想法吗?我的配置看起来像这样:
location / {
root /var/www/http;
try_files $uri $uri/ index.php /index.php$is_args$args @rewrite;
}
location @rewrite {
rewrite ^/(.*)/xhr.(.*)\.php$ /xhr.php?parameter=$1¶meter2=$2 last;
}
这基本上可以用nginx吗?这里有什么不对? 谢谢:))
//编辑: 我解决了它,但它看起来效率不高......
location / {
root /var/www/http;
try_files $uri $uri/ index.php /index.php$is_args$args;
}
if ($request_uri ~ .*/xhr.*) {
rewrite ^/(.*)/xhr.(.*)\.php$ /xhr.php?parameter=$1¶meter2=$2 break;
}
答案 0 :(得分:2)
您可以删除if并在同一级别的位置重写。通过这种方式,您将为每个请求保存一个正则表达式(if中的一个)。
实际上我认为你也可以删除location /
:
root /var/www/http;
rewrite ^/(.*)/xhr.(.*)\.php$ /xhr.php?parameter=$1¶meter2=$2 break;
try_files $uri $uri/ index.php /index.php$is_args$args;