Your DNS providers aren't completely in the wrong.  The problem as I
understand it is that the DNS standard itself doesn't support CNAMEs for
"naked" domains, like foo.com, if you have any other data associated with
them -- like mail records.  See <
http://superuser.com/questions/264913/cant-set-example-com-as-a-cname-record>.
This is something that it would be great if the standards bodies fixed, but
standards move slowly and there may be underlying problems that I just
don't understand that would make it hard to change.

So the question is, why use CNAMEs instead of A records?  If you're using a
hosting provider, it adds a level of indirection where your they can change
stuff to load-balance your site without asking you to set up your own
complex DNS stuff (round-robin, etc) or constantly change the IP you're
pointing to.  This is useful not just for smaller sites, some of the big
ones do this -- "dig www.reddit.com" for a nice example, it looks like
they're using Akamai.

Anyway, I think the real underlying requirement is that lots of people want
to have their site visible at both foo.com and www.foo.com.  The answer
we've chosen for the PythonAnywhere website itself is to have the "official
site" at www.pythonanywhere.com, and then to ask our DNS provider
(Joker.com) to do an HTTP-level redirect, so that
http://pythonanywhere.com/something gets redirected over to
http://www.pythonanywhere.com/something.  I do that on my personal blog too
-- see http://gilesthomas.com/.

This has two advantages: firstly, by making the "www" domain the official
one, we can use a CNAME and load-balance ourselves like we do our
customers.  Secondly, instead of having two identical sites at slightly
different hostnames, we have one canonical one at one domain.  This means
that all incoming links to our site go to the canonical version, which
means that the Google PageRank effect of the incoming links isn't spread
across two "different" domains, so we get a higher overall PageRank.
(There's also possibly an advantage in that Google apparently downrank
sites that appear to just be copies of other sites, and by only having one
official site then you lower the risk of that happening.)

Now, given the weirdness you saw earlier with http_referrer and http_host
being wrong, it's actually quite possible that your current DNS host
support an HTTP-level redirect like the one we have.  So if you set that up
so that yourdomain.com does an HTTP redirect to www.yourdomain.com, and
then www.yourdomain.com has a CNAME to yourusername.pythonanywhere.com, you
should be set!

I hope that wasn't too rambling and incoherent...


All the best,

Giles




On 12 February 2013 19:03, Jim Steil <ato.st...@gmail.com> wrote:

> Yes, I don't believe it is a pythonanywhere problem.  I'm using mydomain
> for DNS hosting.  They are now telling me that I cannot setup a cname for
> my root domain if I'm using their mailservers and have the mx records point
> to them.  That sounds like a bunch of crap to me, but that is what their
> support is telling me.
>
> The problem I was having earlier was when I had the DNS setup to point the
> url to myaccount.pythonanywhere.com.  Why were sending the traffic, but
> the referer was set to urlOfMyApp.com and http_host was set to
> myaccount.pythonanywhere.com.  So, I definitely think it is a DNS host
> problem but they are telling me that what I want to do is not possible,
> with them or any host.  I'm in no position to argue because I know little
> or nothing of DNS.
>
> -Jim
>
>
> On Tue, Feb 12, 2013 at 12:33 PM, Giles Thomas <giles.tho...@gmail.com>wrote:
>
>> Hi there,
>>
>> PythonAnywhere developer here.  I assume that the request environment
>> where Jim S was seeing the incorrect http_host is the underlying WSGI
>> environment -- is that correct?  If so, that's a weird result.  We
>> definitely don't do anything strange and hacky with those headers; I just
>> ran a test app to confirm and it was set to the correct domain -- that is,
>> I saw the correct http_host, and the http_referer was unset.
>>
>> Jim, perhaps you could point me at the app that had that error?  Is there
>> any chance that you'd set up a non-CNAME redirect at your DNS provider?  I
>> know that Joker (our one) offers not just CNAMEs but "Web-redirects", which
>> just does an HTTP redirect to the name you provide.  Perhaps your provider
>> confuses the two in their interface?
>>
>> Just for clarity: the link through to the username.pythonanywhere.comdomain 
>> works purely at the DNS level.  We need to be able to move web apps
>> from IP address to IP address for load balancing, so we ask our customers
>> to set up their domain with a CNAME to username.pythonanywhere.com with
>> their DNS provider.  But that's just a DNS thing; by the time a request
>> from a browser gets to our servers, it's just to a specific IP address,
>> with the appropriate Host: header in the HTTP request.
>>
>> There should definitely be no weird redirects going on; requests are
>> routed to the appropriate WSGI app based entirely on the hostname provided
>> in the HTTP request, and while that routing knows about which user's
>> sandbox the request should be routed to, it knows nothing about the
>> username.pythonanywhere.com domain.
>>
>>
>> All the best,
>>
>> Giles
>>
>>
>>
>>
>>
>> On Tuesday, February 12, 2013 4:07:19 PM UTC, Jim S wrote:
>>>
>>> Yes, might be a show-stopper for me and others trying to use
>>> pythonanywhere.  I was thinking there were others on the list using
>>> pythonanywhere successfully with web2py.  My problem is I know little about
>>> DNS and routing.  My DNS is hosted by mydomain.com.  There is also a
>>> good chance that I've got something screwed up there too...
>>>
>>> -Jim
>>>
>>> On Tuesday, February 12, 2013 9:58:11 AM UTC-6, Jonathan Lundell wrote:
>>>>
>>>> On 12 Feb 2013, at 7:48 AM, Jim S <j...@qlf.com> wrote:
>>>>
>>>> Looking at request.env I'm seeing the following:
>>>>
>>>> http_host = 
>>>> myaccountname.pythonanywhere.**com<http://myaccountname.pythonanywhere.com>
>>>> http_referer = http://www.myappurl.com
>>>>
>>>> I'm routing in my routes.py based on www.myappurl.com but it never
>>>> goes there.  It is always going to 
>>>> myaccountname.pythonanywhere.**com<http://myaccountname.pythonanywhere.com>
>>>> .
>>>>
>>>>
>>>> Interesting. That seems like a real hack on the part of Python
>>>> Anywhere, and not just because of this problem, but also because you have
>>>> no idea what the real referrer is. Lots of analytics tools depend on that.
>>>>
>>>>
>>>> -Jim
>>>>
>>>> On Tuesday, February 12, 2013 9:25:27 AM UTC-6, Jim S wrote:
>>>>>
>>>>> So you mean to just look at it through a regular view, not in the
>>>>> routes.py.  Got it.  Wasn't thinking straight.
>>>>>
>>>>> -Jim
>>>>>
>>>>> On Monday, February 11, 2013 11:13:23 PM UTC-6, Jonathan Lundell wrote:
>>>>>>
>>>>>> On 11 Feb 2013, at 7:48 PM, Jim Steil <ato....@gmail.com> wrote:
>>>>>>
>>>>>> Sorry for being slow at this, route configuration is certainly not a
>>>>>> forte of mine.  Is there something special I need to do to turn on 
>>>>>> logging?
>>>>>>  How would I examine request.env?  I'm running all of this from
>>>>>> pythonanywhere and don't really know where to find these things.
>>>>>>
>>>>>>
>>>>>>
>>>>>> =BEAUTIFY(request) or =BEAUTIFY(request.env) should do the trick.
>>>>>>
>>>>>> Logging depends on your deployment, but it's worth figuring out. Look
>>>>>> at logging.example.conf. You can set the loglevel of routing in 
>>>>>> routes.py.
>>>>>>
>>>>>> It's really too bad that logging is such a pain to get configured,
>>>>>> because it's really valuable.
>>>>>>
>>>>>>
>>>>>> -Jim
>>>>>>
>>>>>> On Mon, Feb 11, 2013 at 9:06 PM, Jonathan Lundell 
>>>>>> <jlun...@pobox.com>wrote:
>>>>>>
>>>>>>> On 11 Feb 2013, at 7:01 PM, Jim S <j...@qlf.com> wrote:
>>>>>>>
>>>>>>> Jonathan
>>>>>>>
>>>>>>> I am currently using that as my base for getting this working.  Here
>>>>>>> is what I have so far:
>>>>>>>
>>>>>>> routers = dict(
>>>>>>>     # base router
>>>>>>>     BASE=dict(domains = {"www.website1.com":"mustangs"**,
>>>>>>>                     "www.website2.com":"icysa", }))
>>>>>>>
>>>>>>> But, anytime I to either URL, I get the web2py welcome app.
>>>>>>>
>>>>>>> Also, I've saved the file as routes.py.
>>>>>>>
>>>>>>>
>>>>>>> And restarted, right?
>>>>>>>
>>>>>>> Try turning on logging for routes and see what you get. You might
>>>>>>> also examine request.env, and make sure that the target domain is 
>>>>>>> showing
>>>>>>> up properly.
>>>>>>>
>>>>>>>
>>>>>>> -Jim
>>>>>>>
>>>>>>> On Monday, February 11, 2013 6:32:41 PM UTC-6, Jonathan Lundell
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> On 11 Feb 2013, at 3:36 PM, Jim S <j...@qlf.com> wrote:
>>>>>>>>
>>>>>>>> I'm trying to route traffic that comes in on a specific URL to a
>>>>>>>> specifc app.
>>>>>>>>
>>>>>>>> Example:
>>>>>>>>
>>>>>>>> www.host1.com should route to the welcome app
>>>>>>>>
>>>>>>>> www.host2.com should route to mySpecific app
>>>>>>>>
>>>>>>>> I realize this is probably trivial, but I'm really struggling with
>>>>>>>> it.  Hoping to do it with routes.py and not through wsgi stuff.  Please
>>>>>>>> feel free to set me straight if that is not advisable.
>>>>>>>>
>>>>>>>>
>>>>>>>> Look at the domain-routing provision in the parametric router.
>>>>>>>> Documentation in the book, and in router.example.py.
>>>>>>>>
>>>>>>>
>>>>>>>  --
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>> --
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to web2py+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
Giles Thomas
gi...@giles.net
http://www.gilesthomas.com/
http://learningwebgl.com/
http://pythonanywhere.com/

<http://learningwebgl.com/>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to