【问题标题】:Zend - redirect to "public" subdir with htaccessZend - 使用 htaccess 重定向到“公共”子目录
【发布时间】:2012-10-05 17:42:36
【问题描述】:

我开始用 netbeans+zend 开发一个应用程序。我有一个主机并在那里上传了项目文件,但我还没有设法将请求从根目录重定向到公共子目录。每次请求我都会得到 zend 项目的 404 错误页面。 有人可以帮帮我吗?

插件:

我使用以下 htaccess (wwwroot/.htaccess) 重定向:

RewriteEngine On
RewriteRule ^(.*)$ public/$1 [NC,QSA]

在公共文件夹中是项目的默认(生成)htaccess(wwwroot/public/.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]

zend 项目在 wwwroot,我没有任何访问 apache 配置的权限,只能创建 htaccess 文件。 zend 框架文件位于 wwwroot/library/zend 中。项目文件包含在 localhost 上,但不包含在我的 godaddy 主机上。 :S

在本地主机上,我通过每个请求获得 404 页面,在 Godaddy 上,我收到以下错误:

警告: require_once(Zend/Application.php) [function.require-once]:未能 打开流:没有这样的文件或目录 在 /home/content/14/7811914/html/public/index.php 第 18 行

如果我删除 wwwroot/htaccess,并使用“http://localhost/public/”,我会得到 zend fw 打开页面,所以它可以工作,没有重定向,所以我认为在 localhost 上我有一个路由问题,我必须在引导程序或某处覆盖某些内容...在godaddy上,我不知道问题出在哪里...也许是小写文件名,我尝试使用tolowercase函数调用扩展自动加载模块...(明天。 ..)

【问题讨论】:

  • 这里有几件事可能是错误的。例如,您的 .htaccess 可能有问题;您的网站对 url 重写的支持; Apache 配置上的文档根目录。如果您提供更多信息或至少提供示例请求 URI,这将很有帮助
  • 我认为 htaccess 没有任何问题。 localhost上的问题可能是项目的路由,在godaddy上我遇到了一些自动加载错误,但我不知道为什么:S

标签: php zend-framework


【解决方案1】:

您必须使用新的文档根目录配置您的网络服务器。

当您可以访问 .httpd.conf 时,您可以在那里为您的域设置新的文档根目录。

使用 confixx 时,您会在管理面板中的“域”点下方。

使用 plesk 时,您可以在域的名为 vhost.conf 的 conf 文件夹中编辑 vhost 特定配置

<Directory /var/www/vhosts/yourdomain.com/httpdocs/public>
Options -Includes -ExecCGI
SetEnv APPLICATION_ENV "development"
</Directory>
DocumentRoot /var/www/vhosts/yourdomain.com/httpdocs/public

然后运行您的 plesk 更新脚本。

/usr/local/psa/admin/sbin/websrvmng -u --vhost=yourdomain.com

【讨论】:

  • 顺便说一句,这也将你的环境设置为开发,所以修改我的脚本。也许设置 DocumentRoot 就足够了。
  • 哦,对不起,我不准确。 :S 我只有godaddy账号,无法修改文档根目录...
【解决方案2】:

我在这里找到了解决方案: http://www.warpturn.com/zend-framework-on-godaddy-shared-hosting-linux/

这是一个 set_include_path 问题。我替换了 public/index.php 中的 set_include_path 参数,之后一切正常。

【讨论】:

  • 对不起,我不记得了,那是一年前的事了:S 您应该尝试根据我在解决方案中写的内容将 zend 目录或其父目录放在包含路径中.
  • 我认为您应该将页面的位置添加到包含路径中。之后,您可以将 Zend 目录称为 './Zend' 或任何其他类,就像它们在文档根目录中一样。顺便提一句。我们现在得到了下一个版本的zend,也许还有其他功能......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多