0

我有一个 Zend Framework 应用程序,.htaccess在根目录中有一个文件,将所有流量定向到所在的/public目录index.php

这是的内容.htaccess

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/(upload|img|js|css|less)/.*$
RewriteCond %{DOCUMENT_ROOT}/public/upload%{REQUEST_URI} -f
RewriteRule ^(.+\.(jpg|png|mp3))$ /public/upload%{REQUEST_URI} [NC,L]

;RewriteCond %{REQUEST_URI} !^/public/.*$
;RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

如您所见,有两条注释掉的行。

该部分据称将流量定向到/public,并且在我的本地服务器和共享主机上运行,​​但在我的客户端服务器上似乎惨遭失败。

因此,将这两行注释掉后,当我在浏览器中键入站点地址时,我会得到一个目录列表。当我附加/public到地址时,正如预期的那样,我被带到了/public/index.php,但由于请求没有正确重定向,所以也不是 JS 和 CSS 文件。

当我取消注释这些行时,我收到 500 内部服务器错误(index.php根本没有达到)。

其他重写工作正常(至少据我所知)。

任何想法为什么会发生这种情况以及如何纠正这种情况?

提前致谢。

4

1 回答 1

1

为自己省去很多悲伤,并执行以下操作:

  1. 将文档根目录设置为public目录。
  2. 在 VirtualHost 条目中设置重写规则或在目录中的文件中使用标准Zend Framework 重写规则.htaccesspublic

好的,鉴于您的共享主机限制,试试这个...

  1. 将所有public文件放入您的文档根目录,包括.htaccess上面第 2 步中提到的文件
  2. 将其余文件夹(即applicationlibrary放在文件系统中的任何位置,最好是在 Web 文档根目录之外。一个例子可能是/home/user/apps/my-app-name/
  3. 用新的修改index.php文件APPLICATION_PATH,例如

    // Define path to application directory
    defined('APPLICATION_PATH')
        || define('APPLICATION_PATH', 'home/user/apps/my-app-name/application');
    

现在一切都应该“正常工作”,并且您的网站将不会被 URL 中的“公共”一词访问。

于 2011-08-30T01:09:42.880 回答