1

我想要的是:

保护除 index.php 之外的所有文件/文件夹。

阿帕奇:

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

我的项目结构

URL:“http://localhost/MyProject/”
PROJECT_DIRECTORY C:/xampp/htdocs/MyProject/

项目目录如下所示:

  • 配置(文件夹)
  • 资源(文件夹)
  • 来源(文件夹)
  • 索引.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 中定义该目录。这并没有解决我的问题,但我知道第二个例子是错误的。

4

1 回答 1

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 进行路由,则您实际上不需要否认任何事情

于 2012-08-28T18:04:19.050 回答