0

オプションで文字列 (asdf) を照合し、書き換えから削除したいと考えています。

location ~ /somefolder {
    rewrite ^/somefolder(.*)(?:asdf)?(.*html)$ http://example.com$1$2 permanent;
}

したがって、これにより、要求された URL がルート ドメインに書き換えられ、asdf存在する場合はその URL が削除されます。

アドレスの下にmydomain.com/somefolder/pencil.html書き換えられますmydomain.com/pencil.html

2013/09/16 09:52:24 [notice] 16866#0: *1 "^/somefolder(.*)(?:asdf)?(.*html)$" matches "/somefolder/pencil.html", client: 10.0.0.2, server: mydomain.com, request: "GET /somefolder/pencil.html HTTP/1.1", host: "mydomain.com"
2013/09/16 09:52:24 [notice] 16866#0: *1 rewritten redirect: "http://mydomain.com/pencil.html", client: 10.0.0.2, server: mydomain.com, request: "GET /somefolder/pencil.html HTTP/1.1", host: "mydomain.com"

as heremydomain.com/somefolder/pencil-asdf.htmlに書き換えたところmydomain.com/pencil-asdf.html

2013/09/16 09:52:31 [notice] 16866#0: *1 "^/somefolder(.*)(?:asdf)?(.*html)$" matches "/somefolder/pencil-asdf.html", client: 10.0.0.2, server: mydomain.com, request: "GET /somefolder/pencil-asdf.html HTTP/1.1", host: "mydomain.com"
2013/09/16 09:52:31 [notice] 16866#0: *1 rewritten redirect: "http://mydomain.com/pencil-asdf.html", client: 10.0.0.2, server: mydomain.com, request: "GET /somefolder/pencil-asdf.html HTTP/1.1", host: "mydomain.com"

match yieldingasdfを使用して剥奪されるべきではありません(?:asdf)mydomain.com/pencil-.html

4

1 に答える 1

0

$2 が一致しているか null であるかを無視して、後方参照 $1 と $3 を使用するように解決策を考え出しました。

rewrite ^/somefolder(.*)(asdf)(.*html)$ http://example.com$1$3 permanent;
于 2014-03-29T04:53:43.960 に答える