请注意stackoverflow的默认域名是http://stackoverflow.com,如果您尝试转到http://www.stackoverflow.com,它会将您反弹到http://stackoverflow.com?
这是什么原因?不是技术原因(如在http代码中等),但为什么网站所有者想要这样做?
我知道它纯粹是美学的,我总是有www和不是的主机标题,但有没有理由将用户反弹到单个域,无论是否为subheaded?
没有子域称为裸域.谢谢偷看!从来不知道它有一个术语:)
感谢您到目前为止的答案 - 请注意我明白www.domain.com可以指向domain.com.这不是一个问题,我是否应该提供两者或两者,或者,它会问为什么有些网站默认为裸域而不是www子域,反之亦然.干杯.
杰夫阿特伍德实际上已经解释了为什么他在这里和这里的裸域都消失了.(点头致Jonas Pegerfalk的帖子:))
Jeff的帖子(以及此主题中的其他人)也谈到了带有cookie和静态图像的裸域问题.基本上,如果您在裸域中使用cookie,则也强制所有子域.解决方案是购买另一个域,由Yahoo Perf团队在此处发布.
嗯,我会试着更清楚..
在我用node.js编写的应用程序服务器中,我有多个端口的内部代理:
8080港口我有我的休息api.3000端口我有我的推送服务器和聊天.我使用npm包子域路由器进行内部路由到端口,将"前端"中的子域暴露给那些代理回到那些端口.
代码演示: (<some-app>并非该应用的实名明显)
require('subdomain-router')
({
host: '<some-app>.herokuapp.com',
subdomains:
{
'': 8080, // <some-app>.herokuapp.com <=> ::8080 --WORKS--
'api': 8080, // api.<some-app>.herokuapp.com <=> ::8080
'chat': 3000, // chat.<some-app>.herokuapp.com <=> ::3000
'push': 3000 // push.<some-app>.herokuapp.com <=> ::3000
}
}).listen(process.env.PORT || 5000);
Run Code Online (Sandbox Code Playgroud)
API工作得很好,虽然我无法访问它<some-app>.herokuapp.com:8080,但只能通过<some-app>.herokuapp.com内部subdomain-router模块来实现它的魔力.
此外,我无法访问子域.在尝试访问时,api.<some-app>.herokuapp.com我No such app从heroku 获取错误页面.
TL; DR访问<some-app>.herokuapp.com工作(重定向到/v1我的API的路径),但无法访问<some-app>.herokuapp.com:8080,<some-app>.herokuapp.com:3000或 …
我有我的主应用程序站点https://drchrono.com,我在http://blog.drchrono.com下有一个博客子域.一些博主告诉我,您网站的博客子域有助于您主网站的页面浏览.您博客子域的流量是否有助于您网站的Google Pagerank并计入主网站的流量?
科目说的一切.我想要的是将每个子域映射到webapp,如:
http://root.domain.com:8080 -> http://domain.com:8080/
http://manager.domain.com:8080 -> http://domain.com:8080/manager
http://abc.domain.com:8080 -> http://domain.com:8080/abc
http://def.domain.com:8080 -> http://domain.com:8080/def
Run Code Online (Sandbox Code Playgroud)
在本地主机上这将是
http://root.localhost:8080 -> http://localhost:8080/
http://manager.localhost:8080 -> http://localhost:8080/manager
http://abc.localhost:8080 -> http://localhost:8080/abc
http://def.localhost:8080 -> http://localhost:8080/def
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想使用端口80而不是8080,但这是另一个故事.我很乐意首先使用端口8080,以便URL末尾的路径消失.
注意,箭头不是重定向,但如果我按原样离开Tomcat,我会输入.
我知道Tomcat docs页面http://tomcat.apache.org/tomcat-6.0-doc/virtual-hosting-howto.html.我已多次阅读,但没有取得多大进展.我编辑了etc/hosts以添加127.0.0.1 bbstats.localhost.然后我补充道
<Host name="bbstats.localhost" appBase="webapps/bbstats"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
Run Code Online (Sandbox Code Playgroud)
到conf目录中的Tomcat的server.xml.我的webapp的context.xml是:
<Context path="/bbstats" docBase="bbstats" debug="5" reloadable="true" crossContext="true">
</Context>
Run Code Online (Sandbox Code Playgroud)
重启Tomcat.通过Ant重新部署.进入时
HTTP://bbstats.localhost:8080 /
进入浏览器,我得到一个空白屏幕.
当使用appBase ="webapps"而不是appBase ="webapps/bbstats"时,我会看到Tomcat的root应用程序.后一种行为是预期的.但是如何让bbstats.localhost:8080转到bbstats webapp而没有URL中的尾随/ bbstats?
我正在构建一个rails应用程序,我将在domain.com上的Heroku上托管.我想将WordPress用于phpfog上托管的博客,但我不想使用像blog.domain.com这样的子域名.我宁愿使用像domain.com/blog这样的子目录
它不是关于SEO ......我只是不喜欢子域名.子目录更性感(是的......我实际上是这么说的).
关于如何可靠地实现这一目标的任何想法?在此先感谢您的帮助.
可能有人问过,但我找不到直接答案,或者我找不到的答案.
我有一个域mydomain.com,解析为IP; 我们称之为8.8.8.8.DNS设置还将两个子域指向具有A记录的IP地址.这些都是dev.mydomain.com和staging.mydomain.com.两者都有一个指向8.8.8.8的A记录.
在服务器(8.8.8.8)上,我有两个虚拟主机文件.这些如下:
staging.mydomain.com.conf
<VirtualHost *:80>
ServerName staging.mydomain.com
DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
和...
dev.mydomain.com.conf
<VirtualHost *:80>
ServerName dev.mydomain.com
DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
问题是:
无论我访问http://staging.mydomain.com还是http://dev.mydomain.com,我总是登陆staging.mydomain.com(Apache提供这些文件).
我重新启动了Apache甚至服务器.如果我更改.conf文件的顺序,以便dev是第一个,我总是看到它.任何建议都会非常感激.谢谢!
我发现自己又回到了这个问题!如果您知道语法正确,则可能是一个错误的符号链接.删除它并重新创建,重新启动之间的apache.我刚刚做了这个,它解决了几个小时的头疼.在CentOS您可以检查您的虚拟主机提供与httpd -S
当虚拟主机的apache 日志文件不存在或不可写时,我也发现存在此问题.
这是我的场景:
我有一个应用程序,必须支持多个客户端.每个客户端都将获得一个服务的子域.我们还将有一个没有该应用程序的手册网站,它只是一个关于该产品的网站以及潜在客户如何与我们建立帐户.
鉴于:
www.mycoolsite.com会指出Heroku上的宣传册应用程序.
client1.mycoolsite.com,client2.mycoolsite.com并且client3.mycoolsite.com都指向相同的SaaS应用程序,可以告诉每个请求之间的差异,我应该能够处理所以他们只能看到他们的日期(即设置全局client_id或类似的东西)
我该怎么做呢?我没有用DNS做过很多,所以我对从哪里开始这一点很无能为力.
谢谢.
我正在用Test :: Unit测试我的Rails应用程序.我经常遇到的一个问题是测试我的应用程序的路线,但我还没有找到解决方案.
目前,我正在开发一个使用Basecamp风格子域来区分帐户的应用程序.
有些路由需要子域
constraints(SubdomainRoute) do
get "/login" => "user_sessions#new", :as => :login
get "/logout" => "user_sessions#destroy", :as => :logout
...
end
Run Code Online (Sandbox Code Playgroud)
以及只能在没有子域的情况下访问的路由
constraints(NoSubdomainRoute) do
match "/" => "public#index", :as => :public_root
match "/signup" => "public#signup", :as => :signup
...
end
Run Code Online (Sandbox Code Playgroud)
SubdomainRoute类定义为:
class SubdomainRoute
def self.matches?(request)
request.subdomain.present? && request.subdomain != "api" && request.subdomain != "www"
end
end
Run Code Online (Sandbox Code Playgroud)
NoSubdomainRoute类恰恰相反.
路由按预期工作,但如何使用Test :: Unit测试?
在功能测试中,我可以做类似的事情
assert_routing "/signup", :controller => "public", :action => "signup"
Run Code Online (Sandbox Code Playgroud)
但我无法提供子域,所以实际上只测试Rails内部,这对测试我的应用程序没有任何帮助.在这种情况下我想要测试的是,无论有没有子域,都可以访问signup_path/signup_url.
在代码中,这样的东西
assert_raise(ActionDispatch::RoutingError) { get "http://account.test.host/signup" }
get "http://www.test.host/signup" …Run Code Online (Sandbox Code Playgroud) 我创建了一个网站并将其放在Heroku上.然后我在Heroku控制面板中添加了一个自定义域(例如"site.example.com"),并将DNS指向我的Heroku地址.这很好,但是当我访问该网站时,我收到一个大浏览器警告,说该证书是针对herokuapp.com的,而不是针对"site.example.com".如何关闭HTTPS或以其他方式修复它?(我不需要自己的SSL证书.)
注意:如果您的应用程序强迫用户使用SSL,那么Heroku就不会出错.检查production.rb以确保它没有说:
config.force_ssl = true
Run Code Online (Sandbox Code Playgroud)
如果是,请将其更改为false:
config.force_ssl = false
Run Code Online (Sandbox Code Playgroud) 我已经开发了一个完整的CakePHP框架网站,我们想为移动设备(主要是iPhone/iPad)制作一个非常简单的网站版本.
有没有办法使用现有网站的新子域(例如mobile.mywebsite.com)来呈现特定的视图?我想避免复制和简化当前的一个以匹配新的要求.我不想在每次需要更改控制器操作时"重新开发"新的CakePHP网站并进行两次更改.