Clean-URL rewrite rule with nested "location" and alias directive

Ben Johnson ben at
Tue Nov 19 18:45:15 UTC 2013

On 11/19/2013 12:38 PM, Francis Daly wrote:
> On Tue, Nov 19, 2013 at 10:36:53AM -0500, Ben Johnson wrote:
> Hi there,
>> This works as expected, with one major exception: "clean-URL" rewriting
>> does not work. In other words, the homepage (/stage/) loads correctly,
>> but all sub-pages return a 404. As soon as I attempt to add "rewrite"
>> directives for clean-URLs, the server either returns a 500 (redirect
>> cycle) or "Primary script unknown".
> Can you give an example of a "clean-URL" that matches the location that
> you use, and that does not do what you want it to do?
> Note that your rewrite only happens for urls that end ".php".
> 	f

Thanks for your help, Francis!

Certainly: an example URL is /stage/my-account/ . Ultimately, I would
like for this URL to be rewritten to
/stage/index.php?q=/stage/my-account/ (the file "index.php" exists on
the filesystem at /var/www/

Regarding the rewrite happening only for URLs that end in .php, that had
occurred to me, but if I try to move the rewrite "up one level", into
the block "location ^~ /stage/ {", nginx complains upon requesting the
URL /stage/ that '"alias" cannot be used in location "/stage/" where URI
was rewritten'.

Fundamentally, is the problem here that I need to be modifying the
"alias" directive dynamically (with regular expressions and capture
groups), instead of trying to achieve the same with the "rewrite" directive?

Thanks again for your time,


More information about the nginx mailing list