【问题标题】:Troubles with apache - 403 while trying to protect everything but index.phpapache 出现问题 - 403 试图保护除 index.php 之外的所有内容
【发布时间】:2012-08-23 03:26:28
【问题描述】:

我想要什么:

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

阿帕奇:

  • 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/

项目目录如下:

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

【问题讨论】:

    标签: apache .htaccess webserver xampp


    【解决方案1】:

    你可以试试这个:

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

    这将允许对 //index.php 的请求通过,同时以 403 Forbidden for any else 响应。

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

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

    因此,如果所有内容都已通过 index.php 进行路由,则您实际上不需要拒绝任何内容

    【讨论】:

    • 谢谢,哈哈,我就像从其他项目复制和粘贴一样,并没有意识到这很明显。傻我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2014-02-21
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    相关资源
    最近更新 更多