>> location ~ (^/[^/]*|.html)$ {} > > Yes, that should do what you describe.
I realize now that I didn't define the requirement properly. I said: "match requests with a single / or ending in .html" but what I need is: "match requests with a single / *and* ending in .html, also match /". Will this do it: location ~ ^(/[^/]*\.html|/)$ {} > Note that the . is a metacharacter for "any one"; if you really want > the five-character string ".html" at the end of the request, you should > escape the . to \. Fixed. Do I ever need to escape / in location blocks? >> And let everything else match the following, most of which will 404 >> (cheaply): >> >> location / { internal; } > > Testing and measuring might show that "return 404;" is even cheaper than > "internal;" in the cases where they have the same output. But if there > are cases where the difference in output matters, or if the difference > is not measurable, then leaving it as-is is fine. I'm sure you're right. I'll switch to: location / { return 404; } - Grant _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx