Error with config when upgrading from 0.6.34 to 0.7.59 (the "alias" directive must use captures inside location given by regular expression)

Edho P Arief edhoprima at gmail.com
Thu Jun 18 12:13:43 MSD 2009


2009/6/18 Igor Sysoev <is at rambler-co.ru>:
> On Wed, Jun 17, 2009 at 11:37:58PM +0100, Jools Wills wrote:
>
>> I got an error
>>
>> the "alias" directive must use captures inside location given by regular
>> expression in /etc/nginx/sites-enabled/default:70
>>
>> Quite a confusing message for me. The line in question.
>>
>> alias /home/$homedir/public_html/;
>>
>> which comes from
>>
>> # For requests starting with a tilde, break them into three components:
>> # 1. The username, everything after the tilde up to the first slash
>> # 2. The file location, everything after the username up to the last
>> slash
>> # 3. The trailing slash(es)
>> # Then, rewrite to go to the f~/ branch.
>> location /~ {
>>     if ($request_uri ~ ^/~([^/]*)(/.*[^/]|)(/*)$) {
>>         set $homedir $1;
>>         set $filedir $2;
>>         set $trailingslashes $3;
>>         rewrite ^/~([^/]*)(/|$)(.*)$ f~/$3;
>>     }
>> }
>>
>> # Here, the user-directory components have been parsed. Use an alias to
>> set
>> # the file directory prefix. But if the file at the requested URI is a
>> # directory, we jump to the ~/ branch for additional processing.
>> location f~/ {
>>     alias /home/$homedir/public_html/;
>>     if (-d /home/$homedir/public_html$filedir) {
>>         rewrite ^f~/(.*) ~/$1;
>>     }
>> }
>>
>> # Here, the request is for a directory in a user's home directory. We
>> check
>> # that the request URI contained trailing slashes. If it did not, then
>> we
>> # add the slashes and send a redirect. This circumvents Nginx's faulty
>> # internal slash-adding mechanism.
>> location ~/ {
>>     autoindex on;
>>     alias /home/$homedir/public_html/;
>>     if ($trailingslashes = "") {
>>         rewrite .* /~$homedir$filedir/ redirect;
>>     }
>> }
>>
>> (this code comes from this blog http://blog.sbf5.com/?p=6)
>>
>> Any ideas what this new error means. Seems related to a "new" feature
>> added in 0.7.40.
>
> You should use just:
>
>  locaiton ~ ^/~([^/]+)(/?.*)$) {
location ~ ^/~([^/]+)(/?.*)$

why use (/?.*) ?
wouldn't ^/~([^/]+)(.*)$ work as well?

>      alias /home/$1/public_html/$2;

is there behavior difference between
alias /home/$1/public_html/$2;
and
alias /home/$1/public_html$2;
?

>      autoindex on;
>  }
>

In the page I linked there's also block for php (which can't be
handled using alias).


-- 
O< ascii ribbon campaign - stop html mail - www.asciiribbon.org





More information about the nginx mailing list