Challenge 3: rewrite With permanent vs. No Flag At All — Solution Walkthrough With the permanent flag: rewrite ^/old/(.*)$ /new/$1 permanent; The browser receives an actual HTTP 301 (permanent redirect) response pointing at the new URL. The browser's own address bar updates to show the new URL, and the browser (and search engines) will typically remember this redirect for future requests to the old URL. With no flag at all: rewrite ^/old/(.*)$ /new/$1; Nginx rewrites the URI internally and serves the content at /new/... directly, but the browser never receives any redirect response at all — the browser's address bar still shows the original /old/... URL the user actually requested, with no visible indication that anything was rewritten behind the scenes. The practical difference: With permanent, the client is explicitly told the resource has moved, and its own address bar reflects that. With no flag, the rewrite is entirely invisible to the client — the same final content is served, but the URL displayed never changes, which can be surprising if the person configuring this expected the address bar to update the way a redirect would. WHY THIS WORKS AS AN ANSWER ------------------------------ This exercise checks that the "internal rewrite vs. actual client- visible redirect" distinction from this chapter's own rewrite section is understood specifically from the browser's own perspective — the same underlying URI substitution produces two genuinely different user-facing outcomes depending on which flag, if any, is used.