Zend 框架与子域

Posted

技术标签:

【中文标题】Zend 框架与子域【英文标题】:Zend Framework with subdomains 【发布时间】:2012-02-28 01:18:13 【问题描述】:

我在让 zend 框架与我的服务器上的子域很好地配合时遇到问题。我在 ubuntu 11.10 上运行了一个 LAMP 堆栈,我还使用了一个动态 dns 服务,我在其中定义了我的区域记录。所以基本上我的 dns 设置如下:

DNS: 在一家公司注册并将我的域名指向此处的动态 DNS 名称服务器。

使用动态 DNS 主机,我有 3 条已定义的 A 类型区域记录:

mydomain.com 000.00.0.0
www.mydomain.com 000.00.0.0
*.mydomain.com 000.00.0.0  <-- wildcard to catch all subdomains

Apache 设置

/etc/apache2/sites-available :: /sites-enabled 我有mydomain 的默认设置和mysubdomain.mydomain.com 的另一个虚拟主机

/var/www : 我有 mydomain.com/public /var/www/public 文件夹作为其文档根目录

/var/www/mysubdomain: 我有 mysubdomain.mydomain.com 使用 /var/www/mysubdomain/public 文件夹作为其根目录

我认为所有这些设置都正确,因为我正确地向www.mydomain.com 提供任何请求,并且我也正确地向www.mysubdomain.mydomain.com 提供任何请求。

但是当我发出www.mysubdomain.mydomain.com/:controllerwww.mysubdomain.mydomain.com/:controller/:action 之类的请求时,我收到来自服务器的 404 Not Found 并显示以下消息:

The requested URL /controller/action was not found on this server.

我认为这是我的 .htaccess 的问题,它在

中以以下方式设置

我的 .htaccess

RewriteEngine on
RewriteCond %REQUEST_FILENAME !-f
RewriteRule .* index.php 

问题是,当我当前尝试访问的应用程序被设置并作为普通域(如www.mysubdomain.com)访问时,一切正常。

【问题讨论】:

【参考方案1】:

我正在使用以下 .htaccess:

RewriteEngine On
RewriteCond %REQUEST_FILENAME -s [OR]
RewriteCond %REQUEST_FILENAME -l [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

也许你可以尝试提供结果。

【讨论】:

使用 .htaccess 获得 500 内部服务器错误,这很奇怪,因为如果我没记错的话,这是 zf 推荐的默认 .htaccess 你能用 在 /public 文件夹中,看看你是否可以访问它?或者您是否也为此获得 500 分? 您是否在 httpd.conf 中为您的虚拟主机设置了AllowOverride FileInfo?这是授予 .htaccess 文件启用重写引擎的权限所必需的。 抱歉,发现我的错误。这是 apache 的新安装,我必须运行 a2enmod rewrite 才能启用 url 重写。虽然我原来的 .htaccess 仍然有效,但我给 Goeran 的答案是花时间。

以上是关于Zend 框架与子域的主要内容,如果未能解决你的问题,请参考以下文章

Zend 框架与 dojo

Zend 框架表单与 jquery

如何将 PHPUnit 与 Zend 框架一起使用?

Zend 框架与 PHP,更改类标签

使用 zend 框架安装和使用学说

使用 Zend 框架的动态网站导航 - XML 与 MySQL