有一些奇怪的事情发生了。我在网站的子文件夹中使用Zend Framework。我的网站有一个模块化结构,因此链接包含模块名称( www.xx.com/ modulename )。我已经为根目录创建了一个.htaccess文件,因此所有请求都将路由到 public 目录。
当我尝试访问主页( www.xx.com )或任何模块时,它完全按照预期进行操作。 www.xx.com/authentication , www.xx.com/sample 或 www.xx.com/deathmetalreallyrox 都正常运作。但当我尝试连接到 www.xx.com/admin 时,它会崩溃并烧伤!但它确实适用于 www.xx.com/public/admin/ 。
可能是,我的托管服务提供商在httpd.conf中设置了某种规则,以防止我访问托管中的 admin 部分? 这是我的.htaccess:
SetEnv APPLICATION_ENV development
RewriteRule ^(browse|config).* - [L]
ErrorDocument 500 /error-docs/500.shtml
SetEnv CACHE_OFFSET 2678400
SetEnv APP_DOMAIN http://www.xx.com/public
SetEnv APP_PREF /public
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Fri, 25 Sep 2037 19:30:32 GMT"
Header unset ETag
FileETag None
</FilesMatch>
RewriteEngine On
RewriteRule ^(adm|statistics) - [L]
RewriteRule ^admin/(.*) public/admin/$1
RewriteRule ^(.*)$ public/$1 [L]
帮助?
编辑: 浏览器错误消息:
Not Found
The requested URL /admin/ was not found on this server.
答案 0 :(得分:0)
您首先将从admin/
开始的所有内容重定向到public/admin/
,然后将所有内容重定向到public/whatever
。因此,当您请求/admin/
时,它会尝试为您提供不存在的/public/public/admin/
,因此您会获得404。
尝试删除行RewriteRule ^admin/(.*) public/admin/$1
。它已经由下一行处理,你不想做两次。
答案 1 :(得分:0)
事实证明,服务器以某种方式错误配置。
由于我没有完全控制服务器,我不知道,httpd.conf中有一条规则拒绝访问任何名为 admin 或管理员,这样当我尝试通过此名称获取文件夹的内容时,Apache首先检查是否存在此名称的文件夹,并默认拒绝它。
因此,简洁的答案是,服务器配置错误,不允许访问特定文件夹。