.htaccess特定文件夹不会被重写

时间:2010-08-09 06:53:49

标签: .htaccess

有一些奇怪的事情发生了。我在网站的子文件夹中使用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.

2 个答案:

答案 0 :(得分:0)

您首先将从admin/开始的所有内容重定向到public/admin/,然后将所有内容重定向到public/whatever。因此,当您请求/admin/时,它会尝试为您提供不存在的/public/public/admin/,因此您会获得404。

尝试删除行RewriteRule ^admin/(.*) public/admin/$1。它已经由下一行处理,你不想做两次。

答案 1 :(得分:0)

事实证明,服务器以某种方式错误配置。

由于我没有完全控制服务器,我不知道,httpd.conf中有一条规则拒绝访问任何名为 admin 管理员,这样当我尝试通过此名称获取文件夹的内容时,Apache首先检查是否存在此名称的文件夹,并默认拒绝它。

因此,简洁的答案是,服务器配置错误,不允许访问特定文件夹。