我正在尝试使用sfDomainRoutePlugin plugin创建包含子域的网站。我在Linux上使用SF版本1.4.12,使用Apache作为Web服务器。
我正在按照在线说明创建以下路由文件:
homepage:
url: /
class: sfDomainRoute
param: { module: foo, action: index }
requirements:
sf_host: [portal.localhost]
#Sample route limited to one subdomain
blog:
url: /
class: sfDomainRoute
param: { module: foo, action: foo1 }
requirements:
sf_host: blog.portal.localhost
#Sample route that will capture the subdomain name as a parameter
user_page:
url: /
class: sfDomainRoute
param: { module: foo, action: foo2 }
#Sample route that will not receive a subdomain and will default to www.greenanysite.com
install:
url: /install
class: sfDomainRoute
param: { module: foo, action: foo3 }
我的foo模块代码将方法foo1,foo2和foo3作为存根函数实现,每个方法都有自己的模板,其中只包含确认执行哪个方法的文本(例如'foo :: Foo1被调用')等。
索引方法的模板(在foo模块中)如下所示:
<html>
<head><title>Test subdomains</title></head>
<body>
<ul>
<li><?php echo link_to('homepage', '@homepage'); ?></li>
<li><?php echo link_to('blog', '@blog'); ?></li>
<li><?php echo link_to('zzzrbyte', '@user_page?subdomain=zzzrbyte'); ?></li>
<li><?php echo link_to('install', '@install'); ?></li>
</ul>
</body>
</html>
正确生成网址(即使用routing.yml文件中指定的子网域),但是当我点击“博客”或“zzzrbyte”链接时,我收到错误消息:'找不到服务器“
例如,我收到了这条消息:
找不到服务器Firefox无法找到服务器 blog.portal.localhost。
AFAICT,我正在完全按照在线说明进行操作,所以我无法看到我的错误。有人能发现可能造成这个问题的原因吗?。
[[UPDATE]]
我刚刚意识到通过将子域添加到我的hosts文件,这似乎摆脱了问题。我不确定这是修复还是仅仅是一个临时的解决方法。如果这是做事的方式,我想知道为什么这些重要的信息被排除在笔记之外?
如果这是让事情发挥作用的方式,那就意味着必须事先知道子域(即不是动态生成并在运行时解决),而且 - 我不确定这样的解决方案是如何工作的远程服务器,因为我在一台物理机器上运行多个网站(作为虚拟服务器),而我没有在服务器上使用主机文件。
非常感谢任何帮助。
答案 0 :(得分:0)
将子域添加到主机是解决此问题的正确方法