使用apache的麻烦 - 403尝试保护除index.php之外的所有内容

时间:2012-08-28 15:13:11

标签: apache .htaccess webserver xampp

我想要的是什么:

保护所有文件/文件夹,但保护index.php。

的Apache:

  • Apache / 2.4.2(Win32)OpenSSL / 1.0.1c PHP / 5.4.4
  • 作为服务运行(xampp 1.8)
  • 未修改

我的项目结构

网址:“http:// localhost / MyProject /”
PROJECT_DIRECTORY C:/ xampp / htdocs / MyProject /

项目目录如下:

  • config(文件夹)
  • ressources(文件夹)
  • sources(文件夹)
  • 的index.php

问题:

我的.htaccess文件遇到麻烦,因为我总是收到403甚至500错误。

我尝试了不同的设置来实现目标,但这些都没有奏效。我尝试过Directory,DirectoryMatch,Files,FilesMatch等。

但我认为它应该如此简单:

# Activate rewrite engine
RewriteEngine on
RewriteBase /

# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]

# Deny from all
Order deny,allow
Deny from all

# Allow only index.php
<Files "index.php">
Allow from all
</Files>

或类似的东西:

...

# Deny from all
<Directory />
Order deny,allow
Deny from all
</Directory>

# Allow only root dir
<Directory "/MyProject" />
Allow from all
</Directory>

愿有人能帮助我吗?

编辑:我最近发现,我无法使用标签,因为.htaccess对我放入的目录有效,因此无需在.htaccess中定义该目录。这并没有解决我的问题,但我知道第二个例子是错误的。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(index\.php)$
RewriteRule ^ - [L,F]

这将允许//index.php的请求通过403 Forbidden响应任何其他内容。

但是,你已经有了这条规则:

# Redirect all requests to index.php
RewriteRule ^(.*)$ index\.php?/$1 [QSA]

因此,如果所有内容都已通过index.php

进行路由,那么您真的不需要拒绝任何内容