Hi, Following this example from the docs: #rewrites http://www.mydomain.nl/foo => http://mydomain.nl/foo if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo' } Would the opposite of that be: #rewrites http://mydomain.nl/foo => http://www.mydomain.nl/foo if ($host ~* !^(.*)\.mydomain\.nl$) { rewrite ^(.*)$ http://www.mydomain.nl/$1 permanent; } Does that make sense ? Is $host_without_www a reserved variable ? and is the inverse $host_with_www ? Thanks
on 01.09.2008 02:10
on 01.09.2008 07:14
On Sun, Aug 31, 2008 at 11:59:39PM +0000, David wrote: > > #rewrites http://mydomain.nl/foo => http://www.mydomain.nl/foo > if ($host ~* !^(.*)\.mydomain\.nl$) { > rewrite ^(.*)$ http://www.mydomain.nl/$1 permanent; > } > > Does that make sense ? > > Is $host_without_www a reserved variable ? and is the inverse $host_with_www ? No, $host_without_www is not reserved name. Try the following: - if ($host ~* !^(.*)\.mydomain\.nl$) { + if ($host !~* ^(.*)\.mydomain\.nl$) { BTW, it's better to use something like this instead of "if": server { server_name www.maydomain.nl; ... } server { server_name maydomain.nl; rewrite ^(.*)$ http://www.mydomain.nl/$1 permanent; }
on 01.09.2008 09:00
yeah, i took your suggestion and this is what i've been using, with
the added addition of redirecting and keeping the URI
server {
listen 80;
server_name www.michaelshadle.com;
rewrite ^/(.*) http://michaelshadle.com/$1 permanent;
}
server {
listen 80;
server_name michaelshadle.com;
index index.php;
root /htdocs/michaelshadle.com/;
... etc ...
}
on 01.09.2008 09:09
On Sun, Aug 31, 2008 at 11:52:07PM -0700, mike wrote: > listen 80; > server_name michaelshadle.com; > index index.php; > root /htdocs/michaelshadle.com/; > ... etc ... > } Just for info, here is some configuration that returns 404 for any invalid hostname if you do not want to associate your site with these names: server { listen 80 default; server_name _; return 404; } server { listen 80; server_name www.michaelshadle.com 67.228.73.162 # your IP address ""; # request without host header #redirect stuff; } server { listen 80; server_name michaelshadle.com; #main site }
on 01.09.2008 09:38
On 9/1/08, Igor Sysoev <is@rambler-co.ru> wrote: > Just for info, here is some configuration that returns 404 for any invalid > hostname if you do not want to associate your site with these names: > > server { > listen 80 default; > server_name _; > return 404; > } this would probably work to log any unknown host headers/missing host headers, right? server { listen 80 default; server_name _; return 404; access_log /var/log/nginx/unmapped.log; root /htdocs/unmapped/; } another question: is there any reason to require the ending slash "/" ? root /htdocs/unmapped/; as opposed to: root /htdocs/unmapped; i used to think it was required but it seems to work properly now without the slash too.
on 01.09.2008 09:42
On Mon, Sep 01, 2008 at 12:29:44AM -0700, mike wrote: > > this would probably work to log any unknown host headers/missing host > headers, right? > > server { > listen 80 default; > server_name _; > return 404; > access_log /var/log/nginx/unmapped.log; > root /htdocs/unmapped/; > } Yes. > another question: > > is there any reason to require the ending slash "/" ? > root /htdocs/unmapped/; > as opposed to: > root /htdocs/unmapped; > > i used to think it was required but it seems to work properly now > without the slash too. There is no difference for "root" directive. Actually, nginx deletes trailing slash from "root" directive because $request_file_name is $document_root$uri", and $uri has slash as first character. But the trailing slash is important for "alias" directive, because "alias" literally replaces location part of URI: location /dir/ { alias /path/to/; } /dir/file > /path/to/file
on 01.09.2008 09:52
On 9/1/08, Igor Sysoev <is@rambler-co.ru> wrote: > > /dir/file > /path/to/file Gotcha. Thanks.
on 01.09.2008 09:54
On Mon, Sep 01, 2008 at 12:43:58AM -0700, mike wrote: > > alias /path/to/; > > } > > > > /dir/file > /path/to/file > > Gotcha. Thanks. Just to make clean: location /dir/ { alias /path/to; } /dir/file > /path/tofile or location /dir { alias /path/to/; } /dir/file > /path/to//file
on 01.09.2008 14:15
Thank you Igor, that is a great solution.
"
BTW, it's better to use something like this instead of "if":
server {
server_name www.maydomain.nl;
...
}
server {
server_name maydomain.nl;
rewrite ^(.*)$ http://www.mydomain.nl/$1 permanent;
}
"